
mp_size_t __gmpn_gcdext(mp_ptr gp,mp_ptr up,mp_size_t *usizep,mp_ptr ap,mp_size_t an,mp_ptr bp,
                       mp_size_t n)

{
  bool bVar1;
  undefined *puVar2;
  mp_size_t hgcd_scratch;
  uint uVar3;
  int iVar4;
  mp_limb_t *pmVar5;
  mp_limb_t *pmVar6;
  mp_ptr pmVar7;
  mp_limb_t *pmVar8;
  mp_size_t mVar9;
  mp_limb_t *pmVar10;
  mp_limb_t *pmVar11;
  mp_limb_t *pmVar12;
  mp_limb_t *pmVar13;
  mp_limb_t *pmVar14;
  int iVar15;
  mp_limb_t *pmVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  mp_limb_t mVar20;
  mp_limb_t mVar21;
  mp_size_t gn;
  int iVar22;
  mp_limb_t *pmVar23;
  mp_size_t p1;
  int unaff_s4;
  int iVar24;
  undefined1 *puVar25;
  undefined8 uVar26;
  undefined1 auStack_c8 [32];
  mp_ptr local_90;
  mp_limb_t *local_8c;
  tmp_reentrant_t *__tmp_marker;
  mp_size_t lehmer_un;
  gcdext_ctx ctx;
  hgcd_matrix M;
  
  puVar2 = PTR___stack_chk_guard_0009d540;
  puVar25 = auStack_c8;
  uVar17 = n * 4 + 3;
  uVar3 = (an - n) + 1;
  if ((int)uVar17 <= (int)uVar3) {
    uVar17 = uVar3;
  }
  iVar22 = n + 1;
  __tmp_marker = (tmp_reentrant_t *)0x0;
  iVar15 = *(int *)PTR___stack_chk_guard_0009d540;
  uVar3 = uVar17 << 2;
  iVar19 = n >> 1;
  if (599 < n) {
    iVar4 = n / 3;
    iVar24 = iVar4;
    if (iVar19 <= iVar4) {
      iVar24 = iVar19;
    }
    iVar18 = iVar19;
    if (iVar19 < iVar4) {
      iVar18 = iVar4;
    }
    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();
    iVar18 = n + iVar18 + -1;
    if (iVar4 <= iVar18) {
      iVar4 = iVar18;
    }
    uVar3 = 0x106b;
    if (0x106a < (int)uVar17) {
      uVar3 = uVar17;
    }
    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;
    uVar17 = iVar4 + unaff_s4;
    if (iVar4 + unaff_s4 < (int)uVar3) {
      uVar17 = uVar3;
    }
    uVar17 = iVar22 * 2 + uVar17;
    uVar3 = uVar17 * 4;
  }
  if (uVar3 < 0x7f01) {
    iVar4 = -(uVar3 + 7 & 0xfffffff8);
    puVar25 = auStack_c8 + iVar4;
    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);
  }
  else {
    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);
  }
  local_90 = gp;
  local_8c = up;
  if (n < an) {
    *(mp_size_t *)(puVar25 + 0x18) = n;
    *(mp_ptr *)(puVar25 + 0x14) = bp;
    *(mp_size_t *)(puVar25 + 0x10) = an;
    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);
    pmVar7 = ap + n;
    mVar9 = n;
    do {
      mVar9 = mVar9 + -1;
      if (pmVar7[-1] != 0) goto LAB_0004eb40;
      pmVar7 = pmVar7 + -1;
    } while (mVar9 != 0);
    if (n != 0) {
      iVar22 = n + -1;
      mVar21 = *bp;
      pmVar13 = gp;
      if (iVar22 != 0) {
        do {
          bp = bp + 1;
          *pmVar13 = mVar21;
          iVar22 = iVar22 + -1;
          mVar21 = *bp;
          pmVar13 = pmVar13 + 1;
        } while (iVar22 != 0);
        local_90 = gp + n + -1;
      }
      *local_90 = mVar21;
    }
    *usizep = 0;
    goto joined_r0x0004f3e8;
  }
LAB_0004eb40:
  if (599 < n) {
    if (iVar22 != 0) {
      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);
    }
    pmVar23 = pmVar13 + iVar22;
    pmVar14 = pmVar23 + iVar22;
    ctx.gp = gp;
    ctx.up = up;
    ctx.usize = usizep;
    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);
    pmVar12 = pmVar14 + unaff_s4;
    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;
    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);
    if (iVar22 < 1) {
      *pmVar23 = 1;
      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;
      ctx.tp = pmVar14 + n;
      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;
      ctx.un = 1;
      ctx.u0 = pmVar13;
      ctx.u1 = pmVar23;
      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);
      iVar22 = ctx.un;
      if (uVar17 == 0) {
LAB_0004f0cc:
        n = ctx.gn;
        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;
        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
        n = ctx.gn;
        goto LAB_0004f0dc;
      }
    }
    else {
      *(int *)(puVar25 + 0x10) = iVar19;
      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;
      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);
      pmVar6 = M.p[1][1];
      iVar22 = M.n;
      if (M.n != 0) {
        iVar4 = M.n + -1;
        mVar21 = *M.p[1][0];
        iVar19 = iVar4;
        pmVar5 = pmVar13;
        pmVar8 = M.p[1][0];
        if (iVar4 == 0) {
          *pmVar13 = mVar21;
          *pmVar23 = *pmVar6;
        }
        else {
          do {
            *pmVar5 = mVar21;
            iVar19 = iVar19 + -1;
            mVar21 = pmVar8[1];
            pmVar5 = pmVar5 + 1;
            pmVar8 = pmVar8 + 1;
          } while (iVar19 != 0);
          pmVar13[iVar22 + -1] = mVar21;
          mVar21 = *pmVar6;
          pmVar5 = pmVar23;
          do {
            pmVar6 = pmVar6 + 1;
            *pmVar5 = mVar21;
            iVar4 = iVar4 + -1;
            mVar21 = *pmVar6;
            pmVar5 = pmVar5 + 1;
          } while (iVar4 != 0);
          pmVar23[iVar22 + -1] = mVar21;
        }
      }
      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {
        pmVar5 = pmVar13 + iVar22 + -2;
        pmVar6 = pmVar23 + iVar22 + -2;
        do {
          mVar21 = *pmVar5;
          iVar22 = iVar22 + -1;
          mVar20 = *pmVar6;
          pmVar5 = pmVar5 + -1;
          pmVar6 = pmVar6 + -1;
        } while (mVar21 == 0 && mVar20 == 0);
      }
    }
    if (599 < (int)uVar17) {
      do {
        while( true ) {
          uVar3 = uVar17 / 3;
          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);
          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;
          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);
          if (iVar19 < 1) break;
          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;
          *(uint *)(puVar25 + 0x10) = uVar3;
          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);
          pmVar7 = M.p[0][0];
          mVar9 = M.n;
          if (iVar22 != 0) {
            iVar19 = iVar22 + -1;
            mVar21 = *pmVar13;
            pmVar5 = pmVar12;
            pmVar6 = pmVar13;
            if (iVar19 != 0) {
              do {
                *pmVar5 = mVar21;
                iVar19 = iVar19 + -1;
                mVar21 = pmVar6[1];
                pmVar5 = pmVar5 + 1;
                pmVar6 = pmVar6 + 1;
              } while (iVar19 != 0);
              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;
            }
            *pmVar5 = mVar21;
          }
          pmVar6 = pmVar12 + iVar22;
          if (M.n < iVar22) {
            *(mp_size_t *)(puVar25 + 0x10) = M.n;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);
            pmVar7 = M.p[1][0];
            *(mp_size_t *)(puVar25 + 0x10) = M.n;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);
          }
          else {
            *(int *)(puVar25 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);
            pmVar7 = M.p[1][0];
            mVar9 = M.n;
            *(int *)(puVar25 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);
          }
          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);
          pmVar7 = M.p[1][1];
          mVar9 = M.n;
          if (M.n < iVar22) {
            *(mp_size_t *)(puVar25 + 0x10) = M.n;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);
            pmVar7 = M.p[0][1];
            *(mp_size_t *)(puVar25 + 0x10) = M.n;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);
          }
          else {
            *(int *)(puVar25 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);
            pmVar7 = M.p[0][1];
            mVar9 = M.n;
            *(int *)(puVar25 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);
          }
          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);
          iVar22 = iVar22 + M.n;
          if (mVar21 == 0 && mVar20 == 0) {
            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {
              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;
              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;
              do {
                mVar21 = *pmVar5;
                iVar22 = iVar22 + -1;
                mVar20 = *pmVar6;
                pmVar5 = pmVar5 + -1;
                pmVar6 = pmVar6 + -1;
              } while (mVar21 == 0 && mVar20 == 0);
            }
          }
          else {
            pmVar13[iVar22] = mVar21;
            pmVar23[iVar22] = mVar20;
            iVar22 = iVar22 + 1;
          }
          if ((int)uVar17 < 600) goto LAB_0004ef08;
        }
        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;
        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
        ctx.un = iVar22;
        ctx.u0 = pmVar13;
        ctx.u1 = pmVar23;
        ctx.tp = pmVar14 + uVar17;
        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;
        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);
        if (uVar17 == 0) goto LAB_0004f0cc;
        iVar22 = ctx.un;
      } while (599 < (int)uVar17);
    }
LAB_0004ef08:
    pmVar12 = ap + uVar17;
    pmVar6 = bp + uVar17;
    uVar3 = uVar17;
    pmVar5 = pmVar12;
    pmVar8 = pmVar6;
    while( true ) {
      uVar3 = uVar3 - 1;
      pmVar8 = pmVar8 + -1;
      if ((int)uVar3 < 0) break;
      pmVar11 = pmVar5 + -1;
      pmVar5 = pmVar5 + -1;
      if (*pmVar11 != *pmVar8) goto LAB_0004f274;
    }
    if (uVar17 != 0) {
      mVar21 = *ap;
      if (uVar17 != 1) {
        pmVar7 = gp;
        pmVar14 = ap + 1;
        do {
          *pmVar7 = mVar21;
          pmVar6 = pmVar14 + 1;
          mVar21 = *pmVar14;
          pmVar7 = pmVar7 + 1;
          pmVar14 = pmVar6;
        } while (pmVar6 != pmVar12);
        local_90 = gp + (uVar17 - 1);
      }
      *local_90 = mVar21;
    }
    pmVar5 = pmVar13 + iVar22;
    pmVar14 = pmVar23 + iVar22;
    iVar19 = iVar22;
    pmVar12 = pmVar5;
    pmVar6 = pmVar14;
    do {
      iVar19 = iVar19 + -1;
      pmVar6 = pmVar6 + -1;
      if (iVar19 < 0) goto LAB_0004efd4;
      pmVar8 = pmVar12 + -1;
      pmVar12 = pmVar12 + -1;
    } while (*pmVar8 == *pmVar6);
    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;
    if (iVar22 < 1) {
      iVar19 = iVar22 + -1;
      if (iVar22 != 0) goto LAB_0004fb70;
    }
    else {
      iVar19 = iVar22 + -1;
      if (pmVar5[-1] == 0) {
        do {
          iVar19 = iVar22;
          iVar22 = iVar19 + -1;
          if (iVar22 == 0) goto LAB_0004f044;
          pmVar14 = pmVar5 + -2;
          pmVar5 = pmVar5 + -1;
        } while (*pmVar14 == 0);
        iVar19 = iVar19 + -2;
      }
LAB_0004fb70:
      mVar21 = *pmVar13;
      pmVar14 = up;
      if (iVar19 != 0) {
        do {
          pmVar13 = pmVar13 + 1;
          *pmVar14 = mVar21;
          iVar19 = iVar19 + -1;
          mVar21 = *pmVar13;
          pmVar14 = pmVar14 + 1;
        } while (iVar19 != 0);
        local_8c = up + iVar22 + -1;
      }
      iVar22 = -iVar22;
      *local_8c = mVar21;
    }
    goto LAB_0004f044;
  }
  *(mp_limb_t **)(puVar25 + 0x18) = pmVar13;
  *(mp_size_t *)(puVar25 + 0x14) = n;
LAB_0004f4dc:
  *(mp_ptr *)(puVar25 + 0x10) = bp;
  n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap);
joined_r0x0004f3e8:
  while( true ) {
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
LAB_0004f0dc:
    if (iVar15 == *(int *)puVar2) break;
    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_0004fc80:
    iVar4 = 1;
LAB_0004f6ec:
    iVar22 = (int)((ulonglong)uVar26 >> 0x20);
    *(int *)((int)local_8c + (int)uVar26) = iVar4;
LAB_0004f6f8:
    if (uVar17 != 0) {
      iVar22 = -iVar22;
    }
    *usizep = iVar22;
  }
  return n;
LAB_0004efd4:
  mVar21 = pmVar14[-1];
  while (mVar21 == 0) {
    iVar22 = iVar22 + -1;
    mVar21 = pmVar14[-2];
    pmVar14 = pmVar14 + -1;
  }
  if (iVar22 != 0) {
    iVar19 = iVar22 + -1;
    mVar21 = *pmVar23;
    pmVar13 = up;
    if (iVar19 != 0) {
      do {
        pmVar23 = pmVar23 + 1;
        *pmVar13 = mVar21;
        iVar19 = iVar19 + -1;
        mVar21 = *pmVar23;
        pmVar13 = pmVar13 + 1;
      } while (iVar19 != 0);
      local_8c = up + iVar22 + -1;
    }
    *local_8c = mVar21;
  }
LAB_0004f044:
  *usizep = iVar22;
  n = uVar17;
  goto joined_r0x0004f3e8;
LAB_0004f274:
  if ((*pmVar13 != 0) || (iVar22 != 1)) {
    pmVar5 = pmVar14 + uVar17;
    pmVar8 = pmVar5 + uVar17;
    if (uVar17 != 0) {
      mVar21 = *ap;
      mVar20 = *bp;
      if (uVar17 == 1) {
        *pmVar5 = mVar21;
        *pmVar8 = mVar20;
      }
      else {
        pmVar11 = ap + 1;
        pmVar16 = pmVar5;
        do {
          *pmVar16 = mVar21;
          pmVar10 = pmVar11 + 1;
          mVar21 = *pmVar11;
          pmVar11 = pmVar10;
          pmVar16 = pmVar16 + 1;
        } while (pmVar10 != pmVar12);
        pmVar8[-1] = mVar21;
        pmVar11 = bp + 1;
        pmVar16 = pmVar8;
        do {
          *pmVar16 = mVar20;
          pmVar10 = pmVar11 + 1;
          mVar20 = *pmVar11;
          pmVar11 = pmVar10;
          pmVar16 = pmVar16 + 1;
        } while (pmVar10 != pmVar6);
        pmVar8[uVar17 - 1] = mVar20;
      }
    }
    *(uint *)(puVar25 + 0x14) = uVar17;
    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;
    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;
    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);
    mVar9 = lehmer_un;
    iVar19 = lehmer_un;
    iVar4 = iVar22;
    if (iVar22 < 1) {
      if (lehmer_un != 0) goto LAB_0004f508;
      if (iVar22 != 0) goto LAB_0004f480;
    }
    else {
      if (pmVar13[iVar22 + -1] == 0) {
        pmVar8 = pmVar13 + iVar22;
        do {
          iVar4 = iVar4 + -1;
          if (iVar4 == 0) {
            if (lehmer_un == 0) goto LAB_0004f338;
            goto LAB_0004f508;
          }
          pmVar11 = pmVar8 + -2;
          pmVar8 = pmVar8 + -1;
        } while (*pmVar11 == 0);
      }
      if (lehmer_un != 0) {
LAB_0004f508:
        pmVar8 = pmVar5 + uVar17 + 1;
        if (lehmer_un < 0) {
          iVar19 = -lehmer_un;
        }
        uVar3 = uVar17;
        if ((int)uVar17 < 1) {
LAB_0004f550:
          *(uint *)(puVar25 + 0x10) = uVar3;
          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);
        }
        else {
          mVar21 = pmVar12[-1];
          while (mVar21 == 0) {
            uVar3 = uVar3 - 1;
            if (uVar3 == 0) goto LAB_0004f550;
            mVar21 = pmVar12[-2];
            pmVar12 = pmVar12 + -1;
          }
          if ((int)uVar3 < iVar19) goto LAB_0004f550;
          *(int *)(puVar25 + 0x10) = iVar19;
          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);
        }
        iVar19 = iVar19 + uVar3;
        if (mVar9 < 1) {
          if (((n != 0) &&
              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&
             (n < iVar19)) {
            pmVar12 = pmVar8 + n;
            mVar21 = *pmVar12;
            *pmVar12 = mVar21 + 1;
            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {
              mVar21 = pmVar8[n + 1] + 1;
              pmVar8[n + 1] = mVar21;
              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {
                mVar21 = pmVar12[2] + 1;
                pmVar12[2] = mVar21;
                pmVar12 = pmVar12 + 1;
              }
            }
          }
          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);
          iVar24 = iVar19 + 1;
LAB_0004f728:
          if (0 < (int)uVar17) {
            mVar21 = pmVar6[-1];
            while (mVar21 == 0) {
              uVar17 = uVar17 - 1;
              if (uVar17 == 0) break;
              mVar21 = pmVar6[-2];
              pmVar6 = pmVar6 + -1;
            }
          }
          *(uint *)(puVar25 + 0x10) = uVar17;
          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);
          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);
        }
        else {
          if (((n != 0) &&
              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&
             (n < iVar19)) {
            pmVar12 = pmVar8 + n;
            mVar21 = *pmVar12;
            *pmVar12 = mVar21 - 1;
            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {
              mVar21 = pmVar8[n + 1];
              pmVar8[n + 1] = mVar21 - 1;
              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {
                mVar21 = pmVar12[2];
                pmVar12[2] = mVar21 - 1;
                pmVar12 = pmVar12 + 1;
              }
            }
          }
          if (0 < iVar19) {
            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;
            pmVar12 = pmVar8 + iVar19;
            do {
              iVar24 = iVar19;
              iVar19 = iVar24 + -1;
              if (iVar19 == 0) {
                iVar24 = 0;
                goto LAB_0004f5f0;
              }
              pmVar11 = pmVar12 + -2;
              pmVar12 = pmVar12 + -1;
            } while (*pmVar11 == 0);
            goto LAB_0004f728;
          }
          iVar24 = 0;
          if (iVar19 != 0) {
LAB_0004f720:
            iVar24 = iVar19 + 1;
            goto LAB_0004f728;
          }
        }
LAB_0004f5f0:
        bVar1 = lehmer_un < 1;
        if (bVar1) {
          lehmer_un = -lehmer_un;
        }
        mVar9 = lehmer_un;
        uVar17 = (uint)bVar1;
        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {
          pmVar12 = pmVar23 + iVar22;
          do {
            iVar22 = iVar22 + -1;
            if (iVar22 == 0) break;
            pmVar6 = pmVar12 + -2;
            pmVar12 = pmVar12 + -1;
          } while (*pmVar6 == 0);
        }
        if (iVar22 < lehmer_un) {
          *(int *)(puVar25 + 0x10) = iVar22;
          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);
        }
        else {
          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;
          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);
        }
        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);
        if (iVar24 < 1) goto LAB_0004f6f8;
        if (iVar4 < iVar24) {
          *(int *)(puVar25 + 0x10) = iVar4;
          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);
        }
        else {
          *(int *)(puVar25 + 0x10) = iVar24;
          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);
        }
        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);
        if (iVar22 < iVar19) {
          if (iVar22 != 0) {
            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);
            if (iVar4 == 0) {
              if (up == pmVar23) {
                uVar26 = CONCAT44(iVar19,iVar19 * 4);
                iVar4 = 0;
                goto LAB_0004f6ec;
              }
              bVar1 = iVar22 < iVar19;
              goto LAB_0004fa3c;
            }
            pmVar13 = pmVar23 + iVar22;
            pmVar7 = up + iVar22;
            while( true ) {
              iVar24 = iVar22;
              mVar21 = *pmVar13;
              iVar22 = iVar24 + 1;
              *pmVar7 = mVar21 + 1;
              if (mVar21 + 1 != 0) break;
              pmVar13 = pmVar13 + 1;
              pmVar7 = pmVar7 + 1;
              if (iVar19 == iVar22) {
                iVar4 = 1;
                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);
                goto LAB_0004f6ec;
              }
            }
          }
          bVar1 = iVar22 < iVar19;
          if ((up != pmVar23) && (bVar1)) {
LAB_0004fa3c:
            iVar4 = 4;
            if (bVar1) {
              iVar4 = (iVar19 - iVar22) * 4;
            }
            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);
            iVar4 = 0;
            uVar26 = CONCAT44(iVar19,iVar19 * 4);
            goto LAB_0004f6ec;
          }
          iVar4 = 0;
          iVar22 = iVar19;
        }
        else {
          if (iVar19 != 0) {
            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);
            if (iVar4 == 0) goto LAB_0004f6e8;
            iVar4 = iVar19 + 1;
            uVar26 = CONCAT44(iVar4,iVar19 * 4);
            pmVar7 = up + iVar19;
            if (iVar22 == iVar19) goto LAB_0004fc80;
            mVar21 = *pmVar7;
            *pmVar7 = mVar21 + 1;
            if (mVar21 + 1 == 0) {
              if (iVar22 <= iVar4) {
LAB_0004f9ec:
                iVar4 = 1;
                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);
                goto LAB_0004f6ec;
              }
              iVar19 = iVar19 + 2;
              mVar21 = up[iVar4] + 1;
              up[iVar4] = mVar21;
              if (mVar21 == 0) {
                do {
                  if (iVar22 == iVar19) goto LAB_0004f9ec;
                  mVar21 = pmVar7[2];
                  iVar19 = iVar19 + 1;
                  pmVar7[2] = mVar21 + 1;
                  iVar4 = 0;
                  pmVar7 = pmVar7 + 1;
                } while (mVar21 + 1 == 0);
                goto LAB_0004f6e8;
              }
            }
          }
          iVar4 = 0;
        }
LAB_0004f6e8:
        uVar26 = CONCAT44(iVar22,iVar22 << 2);
        goto LAB_0004f6ec;
      }
LAB_0004f480:
      iVar22 = iVar4 + -1;
      mVar21 = *pmVar13;
      pmVar14 = up;
      if (iVar22 != 0) {
        do {
          pmVar13 = pmVar13 + 1;
          *pmVar14 = mVar21;
          iVar22 = iVar22 + -1;
          mVar21 = *pmVar13;
          pmVar14 = pmVar14 + 1;
        } while (iVar22 != 0);
        local_8c = up + iVar4 + -1;
      }
      iVar19 = -iVar4;
      *local_8c = mVar21;
    }
LAB_0004f338:
    *usizep = iVar19;
    goto joined_r0x0004f3e8;
  }
  *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;
  *(uint *)(puVar25 + 0x14) = uVar17;
  goto LAB_0004f4dc;
}



uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,
                  uint param_7)

{
  uint *puVar1;
  bool bVar2;
  undefined *puVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  int *piVar11;
  int *piVar12;
  int *piVar13;
  int *piVar14;
  int *piVar15;
  uint uVar16;
  int iVar17;
  int iVar18;
  uint *puVar19;
  int iVar20;
  uint *puVar21;
  int iVar22;
  int *piVar23;
  int unaff_s4;
  undefined1 *puVar24;
  undefined8 uVar25;
  undefined1 auStack_c8 [32];
  int *local_90;
  int *local_8c;
  int local_6c;
  int local_68;
  int *local_64;
  uint local_60;
  int *local_5c;
  int *local_58;
  int local_54;
  int *local_50;
  int *local_4c;
  int *local_48;
  undefined1 auStack_44 [4];
  int local_40;
  undefined4 local_3c;
  undefined4 local_38;
  int *local_34;
  int *local_30;
  int local_2c;
  
  puVar3 = PTR___stack_chk_guard_0009d540;
  puVar24 = auStack_c8;
  uVar16 = param_7 * 4 + 3;
  uVar5 = (param_5 - param_7) + 1;
  if ((int)uVar16 <= (int)uVar5) {
    uVar16 = uVar5;
  }
  iVar22 = param_7 + 1;
  local_6c = 0;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  uVar5 = uVar16 << 2;
  iVar18 = (int)param_7 >> 1;
  if (599 < (int)param_7) {
    iVar6 = (int)param_7 / 3;
    iVar20 = iVar6;
    if (iVar18 <= iVar6) {
      iVar20 = iVar18;
    }
    iVar17 = iVar18;
    if (iVar18 < iVar6) {
      iVar17 = iVar6;
    }
    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();
    iVar17 = param_7 + iVar17 + -1;
    if (iVar6 <= iVar17) {
      iVar6 = iVar17;
    }
    uVar5 = 0x106b;
    if (0x106a < (int)uVar16) {
      uVar5 = uVar16;
    }
    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;
    uVar16 = iVar6 + unaff_s4;
    if (iVar6 + unaff_s4 < (int)uVar5) {
      uVar16 = uVar5;
    }
    uVar16 = iVar22 * 2 + uVar16;
    uVar5 = uVar16 * 4;
  }
  if (uVar5 < 0x7f01) {
    iVar6 = -(uVar5 + 7 & 0xfffffff8);
    puVar24 = auStack_c8 + iVar6;
    piVar14 = (int *)(&stack0xffffff58 + iVar6);
  }
  else {
    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);
  }
  local_90 = param_1;
  local_8c = param_2;
  if ((int)param_7 < param_5) {
    *(uint *)(puVar24 + 0x18) = param_7;
    *(int **)(puVar24 + 0x14) = param_6;
    *(int *)(puVar24 + 0x10) = param_5;
    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);
    piVar9 = param_4 + param_7;
    uVar5 = param_7;
    do {
      uVar5 = uVar5 - 1;
      if (piVar9[-1] != 0) goto LAB_0004eb40;
      piVar9 = piVar9 + -1;
    } while (uVar5 != 0);
    if (param_7 != 0) {
      iVar22 = param_7 - 1;
      iVar18 = *param_6;
      piVar14 = param_1;
      if (iVar22 != 0) {
        do {
          param_6 = param_6 + 1;
          *piVar14 = iVar18;
          iVar22 = iVar22 + -1;
          iVar18 = *param_6;
          piVar14 = piVar14 + 1;
        } while (iVar22 != 0);
        local_90 = param_1 + (param_7 - 1);
      }
      *local_90 = iVar18;
    }
    *param_3 = 0;
    goto joined_r0x0004f3e8;
  }
LAB_0004eb40:
  if (599 < (int)param_7) {
    if (iVar22 != 0) {
      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);
    }
    piVar23 = piVar14 + iVar22;
    piVar9 = piVar23 + iVar22;
    local_64 = param_1;
    local_5c = param_2;
    local_58 = param_3;
    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);
    piVar13 = piVar9 + unaff_s4;
    *(int **)(puVar24 + 0x10) = piVar13;
    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)
                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);
    if (iVar22 < 1) {
      *piVar23 = 1;
      *(int **)(puVar24 + 0x18) = piVar9;
      local_48 = piVar9 + param_7;
      *(int ***)(puVar24 + 0x14) = &local_64;
      local_54 = 1;
      local_50 = piVar14;
      local_4c = piVar23;
      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);
      iVar22 = local_54;
      if (uVar16 == 0) {
LAB_0004f0cc:
        param_7 = local_60;
        if (local_6c == 0) goto LAB_0004f0dc;
        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
        param_7 = local_60;
        goto LAB_0004f0dc;
      }
    }
    else {
      *(int *)(puVar24 + 0x10) = iVar18;
      *(int **)(puVar24 + 0x14) = piVar13;
      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                         (auStack_44,iVar18 + iVar22,param_4,param_6);
      piVar8 = local_30;
      iVar22 = local_40;
      if (local_40 != 0) {
        iVar6 = local_40 + -1;
        iVar20 = *local_34;
        iVar18 = iVar6;
        piVar7 = piVar14;
        piVar10 = local_34;
        if (iVar6 == 0) {
          *piVar14 = iVar20;
          *piVar23 = *piVar8;
        }
        else {
          do {
            *piVar7 = iVar20;
            iVar18 = iVar18 + -1;
            iVar20 = piVar10[1];
            piVar7 = piVar7 + 1;
            piVar10 = piVar10 + 1;
          } while (iVar18 != 0);
          piVar14[iVar22 + -1] = iVar20;
          iVar18 = *piVar8;
          piVar7 = piVar23;
          do {
            piVar8 = piVar8 + 1;
            *piVar7 = iVar18;
            iVar6 = iVar6 + -1;
            iVar18 = *piVar8;
            piVar7 = piVar7 + 1;
          } while (iVar6 != 0);
          piVar23[iVar22 + -1] = iVar18;
        }
      }
      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {
        piVar7 = piVar14 + iVar22 + -2;
        piVar8 = piVar23 + iVar22 + -2;
        do {
          iVar18 = *piVar7;
          iVar22 = iVar22 + -1;
          iVar6 = *piVar8;
          piVar7 = piVar7 + -1;
          piVar8 = piVar8 + -1;
        } while (iVar18 == 0 && iVar6 == 0);
      }
    }
    if (599 < (int)uVar16) {
      do {
        while( true ) {
          uVar5 = uVar16 / 3;
          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);
          *(int **)(puVar24 + 0x10) = piVar13;
          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)
                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);
          if (iVar18 < 1) break;
          *(int **)(puVar24 + 0x14) = piVar13;
          *(uint *)(puVar24 + 0x10) = uVar5;
          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                             (auStack_44,uVar5 + iVar18,param_4,param_6);
          uVar4 = local_3c;
          iVar18 = local_40;
          if (iVar22 != 0) {
            iVar6 = iVar22 + -1;
            iVar20 = *piVar14;
            piVar7 = piVar13;
            piVar8 = piVar14;
            if (iVar6 != 0) {
              do {
                *piVar7 = iVar20;
                iVar6 = iVar6 + -1;
                iVar20 = piVar8[1];
                piVar7 = piVar7 + 1;
                piVar8 = piVar8 + 1;
              } while (iVar6 != 0);
              piVar7 = piVar13 + iVar22 + 0x3fffffff;
            }
            *piVar7 = iVar20;
          }
          piVar8 = piVar13 + iVar22;
          if (local_40 < iVar22) {
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);
            piVar7 = local_34;
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);
          }
          else {
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);
            piVar7 = local_34;
            iVar18 = local_40;
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);
          }
          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);
          piVar7 = local_30;
          iVar18 = local_40;
          if (local_40 < iVar22) {
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);
            uVar4 = local_38;
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);
          }
          else {
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);
            uVar4 = local_38;
            iVar18 = local_40;
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);
          }
          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);
          iVar22 = iVar22 + local_40;
          if (iVar6 == 0 && iVar18 == 0) {
            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {
              piVar7 = piVar14 + iVar22 + 0x3ffffffe;
              piVar8 = piVar23 + iVar22 + 0x3ffffffe;
              do {
                iVar18 = *piVar7;
                iVar22 = iVar22 + -1;
                iVar6 = *piVar8;
                piVar7 = piVar7 + -1;
                piVar8 = piVar8 + -1;
              } while (iVar18 == 0 && iVar6 == 0);
            }
          }
          else {
            piVar14[iVar22] = iVar6;
            piVar23[iVar22] = iVar18;
            iVar22 = iVar22 + 1;
          }
          if ((int)uVar16 < 600) goto LAB_0004ef08;
        }
        *(int **)(puVar24 + 0x18) = piVar9;
        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
        local_54 = iVar22;
        local_50 = piVar14;
        local_4c = piVar23;
        local_48 = piVar9 + uVar16;
        *(int ***)(puVar24 + 0x14) = &local_64;
        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);
        if (uVar16 == 0) goto LAB_0004f0cc;
        iVar22 = local_54;
      } while (599 < (int)uVar16);
    }
LAB_0004ef08:
    piVar13 = param_4 + uVar16;
    piVar8 = param_6 + uVar16;
    uVar5 = uVar16;
    piVar7 = piVar13;
    piVar10 = piVar8;
    while( true ) {
      uVar5 = uVar5 - 1;
      piVar10 = piVar10 + -1;
      if ((int)uVar5 < 0) break;
      piVar12 = piVar7 + -1;
      piVar7 = piVar7 + -1;
      if (*piVar12 != *piVar10) goto LAB_0004f274;
    }
    if (uVar16 != 0) {
      iVar18 = *param_4;
      if (uVar16 != 1) {
        piVar9 = param_1;
        piVar8 = param_4 + 1;
        do {
          *piVar9 = iVar18;
          piVar7 = piVar8 + 1;
          iVar18 = *piVar8;
          piVar9 = piVar9 + 1;
          piVar8 = piVar7;
        } while (piVar7 != piVar13);
        local_90 = param_1 + (uVar16 - 1);
      }
      *local_90 = iVar18;
    }
    piVar13 = piVar14 + iVar22;
    puVar21 = (uint *)(piVar23 + iVar22);
    iVar18 = iVar22;
    piVar9 = piVar13;
    puVar19 = puVar21;
    do {
      iVar18 = iVar18 + -1;
      puVar19 = puVar19 + -1;
      if (iVar18 < 0) goto LAB_0004efd4;
      puVar1 = (uint *)(piVar9 + -1);
      piVar9 = piVar9 + -1;
    } while (*puVar1 == *puVar19);
    if (*puVar19 < *puVar1) goto LAB_0004efd4;
    if (iVar22 < 1) {
      iVar18 = iVar22 + -1;
      if (iVar22 != 0) goto LAB_0004fb70;
    }
    else {
      iVar18 = iVar22 + -1;
      if (piVar13[-1] == 0) {
        do {
          iVar18 = iVar22;
          iVar22 = iVar18 + -1;
          if (iVar22 == 0) goto LAB_0004f044;
          piVar9 = piVar13 + -2;
          piVar13 = piVar13 + -1;
        } while (*piVar9 == 0);
        iVar18 = iVar18 + -2;
      }
LAB_0004fb70:
      iVar6 = *piVar14;
      piVar9 = param_2;
      if (iVar18 != 0) {
        do {
          piVar14 = piVar14 + 1;
          *piVar9 = iVar6;
          iVar18 = iVar18 + -1;
          iVar6 = *piVar14;
          piVar9 = piVar9 + 1;
        } while (iVar18 != 0);
        local_8c = param_2 + iVar22 + -1;
      }
      iVar22 = -iVar22;
      *local_8c = iVar6;
    }
    goto LAB_0004f044;
  }
  *(int **)(puVar24 + 0x18) = piVar14;
  *(uint *)(puVar24 + 0x14) = param_7;
LAB_0004f4dc:
  *(int **)(puVar24 + 0x10) = param_6;
  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);
joined_r0x0004f3e8:
  while( true ) {
    if (local_6c != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
LAB_0004f0dc:
    if (local_2c == *(int *)puVar3) break;
    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_0004fc80:
    iVar6 = 1;
LAB_0004f6ec:
    iVar22 = (int)((ulonglong)uVar25 >> 0x20);
    *(int *)((int)local_8c + (int)uVar25) = iVar6;
LAB_0004f6f8:
    if (uVar16 != 0) {
      iVar22 = -iVar22;
    }
    *param_3 = iVar22;
  }
  return param_7;
LAB_0004efd4:
  uVar5 = puVar21[-1];
  while (uVar5 == 0) {
    iVar22 = iVar22 + -1;
    uVar5 = puVar21[-2];
    puVar21 = puVar21 + -1;
  }
  if (iVar22 != 0) {
    iVar18 = iVar22 + -1;
    iVar6 = *piVar23;
    piVar14 = param_2;
    if (iVar18 != 0) {
      do {
        piVar23 = piVar23 + 1;
        *piVar14 = iVar6;
        iVar18 = iVar18 + -1;
        iVar6 = *piVar23;
        piVar14 = piVar14 + 1;
      } while (iVar18 != 0);
      local_8c = param_2 + iVar22 + -1;
    }
    *local_8c = iVar6;
  }
LAB_0004f044:
  *param_3 = iVar22;
  param_7 = uVar16;
  goto joined_r0x0004f3e8;
LAB_0004f274:
  if ((*piVar14 != 0) || (iVar22 != 1)) {
    piVar7 = piVar9 + uVar16;
    piVar10 = piVar7 + uVar16;
    if (uVar16 != 0) {
      iVar18 = *param_4;
      iVar6 = *param_6;
      if (uVar16 == 1) {
        *piVar7 = iVar18;
        *piVar10 = iVar6;
      }
      else {
        piVar12 = param_4 + 1;
        piVar15 = piVar7;
        do {
          *piVar15 = iVar18;
          piVar11 = piVar12 + 1;
          iVar18 = *piVar12;
          piVar12 = piVar11;
          piVar15 = piVar15 + 1;
        } while (piVar11 != piVar13);
        piVar10[-1] = iVar18;
        piVar12 = param_6 + 1;
        piVar15 = piVar10;
        do {
          *piVar15 = iVar6;
          piVar11 = piVar12 + 1;
          iVar6 = *piVar12;
          piVar12 = piVar11;
          piVar15 = piVar15 + 1;
        } while (piVar11 != piVar8);
        piVar10[uVar16 - 1] = iVar6;
      }
    }
    *(uint *)(puVar24 + 0x14) = uVar16;
    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;
    *(int **)(puVar24 + 0x10) = piVar10;
    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);
    iVar18 = local_68;
    iVar6 = iVar22;
    if (iVar22 < 1) {
      if (local_68 != 0) goto LAB_0004f508;
      if (iVar22 != 0) goto LAB_0004f480;
    }
    else {
      if (piVar14[iVar22 + -1] == 0) {
        piVar10 = piVar14 + iVar22;
        do {
          iVar6 = iVar6 + -1;
          if (iVar6 == 0) {
            if (local_68 == 0) goto LAB_0004f338;
            goto LAB_0004f508;
          }
          piVar12 = piVar10 + -2;
          piVar10 = piVar10 + -1;
        } while (*piVar12 == 0);
      }
      if (local_68 != 0) {
LAB_0004f508:
        piVar10 = piVar7 + uVar16 + 1;
        iVar20 = local_68;
        if (local_68 < 0) {
          iVar20 = -local_68;
        }
        uVar5 = uVar16;
        if ((int)uVar16 < 1) {
LAB_0004f550:
          *(uint *)(puVar24 + 0x10) = uVar5;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);
        }
        else {
          iVar17 = piVar13[-1];
          while (iVar17 == 0) {
            uVar5 = uVar5 - 1;
            if (uVar5 == 0) goto LAB_0004f550;
            iVar17 = piVar13[-2];
            piVar13 = piVar13 + -1;
          }
          if ((int)uVar5 < iVar20) goto LAB_0004f550;
          *(int *)(puVar24 + 0x10) = iVar20;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);
        }
        iVar20 = iVar20 + uVar5;
        if (iVar18 < 1) {
          if (((param_7 != 0) &&
              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),
              iVar18 != 0)) && ((int)param_7 < iVar20)) {
            piVar13 = piVar10 + param_7;
            iVar18 = *piVar13;
            *piVar13 = iVar18 + 1;
            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {
              iVar17 = piVar10[param_7 + 1] + 1;
              piVar10[param_7 + 1] = iVar17;
              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {
                iVar17 = piVar13[2] + 1;
                piVar13[2] = iVar17;
                piVar13 = piVar13 + 1;
              }
            }
          }
          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);
          iVar18 = iVar20 + 1;
LAB_0004f728:
          if (0 < (int)uVar16) {
            iVar17 = piVar8[-1];
            while (iVar17 == 0) {
              uVar16 = uVar16 - 1;
              if (uVar16 == 0) break;
              iVar17 = piVar8[-2];
              piVar8 = piVar8 + -1;
            }
          }
          *(uint *)(puVar24 + 0x10) = uVar16;
          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);
          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);
        }
        else {
          if (((param_7 != 0) &&
              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),
              iVar18 != 0)) && ((int)param_7 < iVar20)) {
            piVar13 = piVar10 + param_7;
            iVar18 = *piVar13;
            *piVar13 = iVar18 + -1;
            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {
              iVar17 = piVar10[param_7 + 1];
              piVar10[param_7 + 1] = iVar17 + -1;
              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {
                iVar17 = piVar13[2];
                piVar13[2] = iVar17 + -1;
                piVar13 = piVar13 + 1;
              }
            }
          }
          if (0 < iVar20) {
            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;
            piVar13 = piVar10 + iVar20;
            do {
              iVar18 = iVar20;
              iVar20 = iVar18 + -1;
              if (iVar20 == 0) {
                iVar18 = 0;
                goto LAB_0004f5f0;
              }
              piVar12 = piVar13 + -2;
              piVar13 = piVar13 + -1;
            } while (*piVar12 == 0);
            goto LAB_0004f728;
          }
          iVar18 = 0;
          if (iVar20 != 0) {
LAB_0004f720:
            iVar18 = iVar20 + 1;
            goto LAB_0004f728;
          }
        }
LAB_0004f5f0:
        bVar2 = local_68 < 1;
        if (bVar2) {
          local_68 = -local_68;
        }
        iVar20 = local_68;
        uVar16 = (uint)bVar2;
        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {
          piVar13 = piVar23 + iVar22;
          do {
            iVar22 = iVar22 + -1;
            if (iVar22 == 0) break;
            piVar8 = piVar13 + -2;
            piVar13 = piVar13 + -1;
          } while (*piVar8 == 0);
        }
        if (iVar22 < local_68) {
          *(int *)(puVar24 + 0x10) = iVar22;
          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);
        }
        else {
          *(int *)(puVar24 + 0x10) = local_68;
          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);
        }
        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);
        if (iVar18 < 1) goto LAB_0004f6f8;
        if (iVar6 < iVar18) {
          *(int *)(puVar24 + 0x10) = iVar6;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);
        }
        else {
          *(int *)(puVar24 + 0x10) = iVar18;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);
        }
        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);
        if (iVar22 < iVar18) {
          if (iVar22 != 0) {
            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);
            if (iVar6 == 0) {
              if (param_2 == piVar23) {
                uVar25 = CONCAT44(iVar18,iVar18 * 4);
                iVar6 = 0;
                goto LAB_0004f6ec;
              }
              bVar2 = iVar22 < iVar18;
              goto LAB_0004fa3c;
            }
            piVar9 = piVar23 + iVar22;
            piVar14 = param_2 + iVar22;
            while( true ) {
              iVar20 = iVar22;
              iVar6 = *piVar9;
              iVar22 = iVar20 + 1;
              *piVar14 = iVar6 + 1;
              if (iVar6 + 1 != 0) break;
              piVar9 = piVar9 + 1;
              piVar14 = piVar14 + 1;
              if (iVar18 == iVar22) {
                iVar6 = 1;
                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);
                goto LAB_0004f6ec;
              }
            }
          }
          bVar2 = iVar22 < iVar18;
          if ((param_2 != piVar23) && (bVar2)) {
LAB_0004fa3c:
            iVar6 = 4;
            if (bVar2) {
              iVar6 = (iVar18 - iVar22) * 4;
            }
            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);
            iVar6 = 0;
            uVar25 = CONCAT44(iVar18,iVar18 * 4);
            goto LAB_0004f6ec;
          }
          iVar6 = 0;
          iVar22 = iVar18;
        }
        else {
          if (iVar18 != 0) {
            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);
            if (iVar6 == 0) goto LAB_0004f6e8;
            iVar6 = iVar18 + 1;
            uVar25 = CONCAT44(iVar6,iVar18 * 4);
            piVar14 = param_2 + iVar18;
            if (iVar22 == iVar18) goto LAB_0004fc80;
            iVar20 = *piVar14;
            *piVar14 = iVar20 + 1;
            if (iVar20 + 1 == 0) {
              if (iVar22 <= iVar6) {
LAB_0004f9ec:
                iVar6 = 1;
                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);
                goto LAB_0004f6ec;
              }
              iVar18 = iVar18 + 2;
              iVar20 = param_2[iVar6] + 1;
              param_2[iVar6] = iVar20;
              if (iVar20 == 0) {
                do {
                  if (iVar22 == iVar18) goto LAB_0004f9ec;
                  iVar20 = piVar14[2];
                  iVar18 = iVar18 + 1;
                  piVar14[2] = iVar20 + 1;
                  iVar6 = 0;
                  piVar14 = piVar14 + 1;
                } while (iVar20 + 1 == 0);
                goto LAB_0004f6e8;
              }
            }
          }
          iVar6 = 0;
        }
LAB_0004f6e8:
        uVar25 = CONCAT44(iVar22,iVar22 << 2);
        goto LAB_0004f6ec;
      }
LAB_0004f480:
      iVar22 = iVar6 + -1;
      iVar20 = *piVar14;
      piVar9 = param_2;
      if (iVar22 != 0) {
        do {
          piVar14 = piVar14 + 1;
          *piVar9 = iVar20;
          iVar22 = iVar22 + -1;
          iVar20 = *piVar14;
          piVar9 = piVar9 + 1;
        } while (iVar22 != 0);
        local_8c = param_2 + iVar6 + -1;
      }
      iVar18 = -iVar6;
      *local_8c = iVar20;
    }
LAB_0004f338:
    *param_3 = iVar18;
    goto joined_r0x0004f3e8;
  }
  *(int **)(puVar24 + 0x18) = piVar9;
  *(uint *)(puVar24 + 0x14) = uVar16;
  goto LAB_0004f4dc;
}


lui gp,0x5
addiu gp,gp,0x6660
addu gp,gp,t9
addiu sp,sp,-0xc8
lw v1,-0x7b00(gp)
sw s8,0xc0(sp)
or s8,sp,zero
sw s1,0xa4(sp)
sw s7,0xbc(sp)
lw s1,0xe0(s8)
lw v0,0xdc(s8)
lw t0,0xd8(s8)
sll s7,s1,0x2
sw a1,0x3c(s8)
sw v0,0x54(s8)
subu v0,t0,s1
sw s0,0xa0(sp)
addiu a1,s7,0x3
sw a0,0x38(s8)
addiu v0,v0,0x1
sw s5,0xb4(sp)
sw s6,0xb8(sp)
slti s5,s1,0x258
slt s0,v0,a1
sw s2,0xa8(sp)
movz a1,v0,s0
or s6,a3,zero
addiu s2,s1,0x1
sw ra,0xc4(sp)
sw s4,0xb0(sp)
sw s3,0xac(sp)
or s0,a1,zero
sw gp,0x20(sp)
sw v1,0x30(s8)
sw a2,0x34(s8)
sw zero,0x5c(s8)
lw a0,0x0(v1)
sw a0,0x9c(s8)
bne s5,zero,0x0004eb14
_sll a1,s0,0x2
lui a0,0x5555
lw t9,-0x7bdc(gp)
sra v0,s1,0x1f
addiu a0,a0,0x5556
sra s3,s1,0x1
mult s1,a0
mfhi a0
subu v0,a0,v0
slt a0,v0,s3
or v1,v0,zero
movz v1,s3,a0
slt a1,s3,v0
movn s3,v0,a1
subu a0,s1,v1
addiu v0,a0,0x1
srl s4,v0,0x1f
jalr t9
_addu s4,s4,v0
addu a1,s1,s3
lw gp,0x20(s8)
sra s4,s4,0x1
lw t0,0xd8(s8)
addiu a1,a1,-0x1
addiu s4,s4,0x1
slt a0,a1,v0
movz v0,a1,a0
li a2,0x106b
slti a0,s0,0x106b
movz a2,s0,a0
sll s4,s4,0x2
sll a1,s2,0x1
addu v0,v0,s4
or a0,a2,zero
slt a2,v0,a2
movn v0,a0,a2
addu s0,a1,v0
sll a1,s0,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x0004f7a4
_lw t9,-0x7d50(gp)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu s3,sp,0x20
slt v0,s1,t0
bne v0,zero,0x0004f34c
_lw v0,0x54(s8)
bne s5,zero,0x0004f4cc
_lw t9,-0x7ee0(gp)
beq s2,zero,0x0004eb6c
_lw v0,0x38(s8)
lw t9,-0x7d58(gp)
sll a2,s2,0x3
or a1,zero,zero
jalr t9
_or a0,s3,zero
lw gp,0x20(s8)
lw v0,0x38(s8)
sll s0,s2,0x2
lw v1,0x34(s8)
sra s7,s1,0x1
addu s2,s3,s0
lw t9,-0x7c84(gp)
sw v0,0x64(s8)
addiu s5,s8,0x84
sw v1,0x70(s8)
addu v1,s2,s0
lw v0,0x3c(s8)
or a0,s5,zero
or a2,v1,zero
sw v1,0x4c(s8)
sll s4,s4,0x2
sw v0,0x6c(s8)
subu v0,s1,s7
or a1,v0,zero
jalr t9
_sw v0,0x50(s8)
sll a0,s7,0x2
lw gp,0x20(s8)
or a3,s5,zero
lw v0,0x54(s8)
lw v1,0x4c(s8)
addu a1,v0,a0
lw v0,0x50(s8)
lw t9,-0x7ddc(gp)
addu s4,v1,s4
addu a0,s6,a0
sw s4,0x10(sp)
jalr t9
_or a2,v0,zero
blez v0,0x0004f068
_lw gp,0x20(s8)
lw t9,-0x7c98(gp)
addu a1,s7,v0
lw a3,0x54(s8)
or a2,s6,zero
sw s7,0x10(sp)
or a0,s5,zero
jalr t9
_sw s4,0x14(sp)
lw s7,0x88(s8)
or s0,v0,zero
beq s7,zero,0x0004ec98
_lw gp,0x20(s8)
lw v0,0x94(s8)
addiu a0,s7,-0x1
lw t1,0x98(s8)
beq a0,zero,0x0004f45c
_lw a3,0x0(v0)
addiu v0,v0,0x4
or a2,s3,zero
or a1,a0,zero
addiu a2,a2,0x4
sw a3,-0x4(a2)
addiu v0,v0,0x4
addiu a1,a1,-0x1
bne a1,zero,0x0004ec44
_lw a3,-0x4(v0)
sll v0,s7,0x2
addiu a1,t1,0x4
addiu t0,v0,-0x4
or v0,s2,zero
addu a2,s3,t0
sw a3,0x0(a2)
lw a2,0x0(t1)
addiu v0,v0,0x4
sw a2,-0x4(v0)
addiu a1,a1,0x4
addiu a0,a0,-0x1
bne a0,zero,0x0004ec78
_lw a2,-0x4(a1)
addu v0,s2,t0
sw a2,0x0(v0)
sll v0,s7,0x2
addiu v0,v0,-0x4
addu a0,s3,v0
addu a1,s2,v0
lw a0,0x0(a0)
lw a1,0x0(a1)
or a0,a0,a1
bne a0,zero,0x0004ece0
_addiu v0,v0,-0x4
addu a1,s3,v0
addu v0,s2,v0
lw a0,0x0(a1)
addiu s7,s7,-0x1
lw a2,0x0(v0)
addiu a1,a1,-0x4
or a0,a0,a2
beq a0,zero,0x0004ecc4
_addiu v0,v0,-0x4
slti v0,s0,0x258
bne v0,zero,0x0004ef08
_lw v1,0x54(s8)
lui v0,0x3fff
ori v0,v0,0xffff
sw v0,0x40(s8)
addiu v0,s8,0x64
sw v0,0x44(s8)
lui v0,0xaaaa
ori v0,v0,0xaaab
sw v0,0x48(s8)
lw v0,0x48(s8)
or a0,s5,zero
lw t9,-0x7c84(gp)
lw a2,0x4c(s8)
multu s0,v0
mfhi s1
srl s1,s1,0x1
subu v0,s0,s1
or a1,v0,zero
jalr t9
_sw v0,0x50(s8)
sll a0,s1,0x2
lw gp,0x20(s8)
or a3,s5,zero
lw v0,0x54(s8)
sw s4,0x10(sp)
addu a1,v0,a0
lw v0,0x50(s8)
lw t9,-0x7ddc(gp)
addu a0,s6,a0
jalr t9
_or a2,v0,zero
blez v0,0x0004f128
_lw gp,0x20(s8)
lw t9,-0x7c98(gp)
addu a1,s1,v0
lw a3,0x54(s8)
or a2,s6,zero
sw s4,0x14(sp)
or a0,s5,zero
jalr t9
_sw s1,0x10(sp)
lw gp,0x20(s8)
beq s7,zero,0x0004edac
_or s0,v0,zero
addiu v0,s7,-0x1
bne v0,zero,0x0004f240
_lw a2,0x0(s3)
or v0,s4,zero
sw a2,0x0(v0)
lw v0,0x88(s8)
sll s1,s7,0x2
lw a1,0x8c(s8)
addu s1,s4,s1
slt a0,v0,s7
bne a0,zero,0x0004f1fc
_lw t9,-0x7d8c(gp)
or a3,s4,zero
sw s7,0x10(sp)
or a2,v0,zero
jalr t9
_or a0,s1,zero
or a3,s2,zero
lw gp,0x20(s8)
or a0,s3,zero
lw a2,0x88(s8)
lw a1,0x94(s8)
lw t9,-0x7d8c(gp)
jalr t9
_sw s7,0x10(sp)
lw gp,0x20(s8)
lw a3,0x88(s8)
or a2,s1,zero
lw t9,-0x7d0c(gp)
or a1,s3,zero
or a0,s3,zero
jalr t9
_addu a3,s7,a3
lw t0,0x88(s8)
lw gp,0x20(s8)
sw v0,0x50(s8)
slt v0,t0,s7
bne v0,zero,0x0004f1b8
_lw t9,-0x7d8c(gp)
or a2,t0,zero
lw a1,0x98(s8)
or a3,s2,zero
or a0,s1,zero
jalr t9
_sw s7,0x10(sp)
or a3,s4,zero
lw gp,0x20(s8)
or a0,s2,zero
lw a2,0x88(s8)
lw a1,0x90(s8)
lw t9,-0x7d8c(gp)
jalr t9
_sw s7,0x10(sp)
lw gp,0x20(s8)
lw a3,0x88(s8)
or a1,s2,zero
lw t9,-0x7d0c(gp)
or a0,s2,zero
or a2,s1,zero
jalr t9
_addu a3,s7,a3
lw v1,0x50(s8)
lw a1,0x88(s8)
lw gp,0x20(s8)
or a0,v1,v0
bne a0,zero,0x0004f190
_addu s7,s7,a1
lw v0,0x40(s8)
addu v0,s7,v0
sll v0,v0,0x2
addu a0,s3,v0
addu v0,s2,v0
lw a0,0x0(a0)
lw v0,0x0(v0)
or v0,a0,v0
bne v0,zero,0x0004eefc
_lui v0,0x3fff
ori v0,v0,0xfffe
addu v0,s7,v0
sll v0,v0,0x2
addu a1,s3,v0
addu v0,s2,v0
lw a0,0x0(a1)
addiu s7,s7,-0x1
lw a2,0x0(v0)
addiu a1,a1,-0x4
or a0,a0,a2
beq a0,zero,0x0004eee0
_addiu v0,v0,-0x4
slti v0,s0,0x258
beq v0,zero,0x0004ed0c
_lw v1,0x54(s8)
sll t0,s0,0x2
or v0,s0,zero
addu s5,s6,t0
addu t3,v1,t0
or t1,s5,zero
or t2,t3,zero
or a1,t3,zero
b 0x0004ef3c
_or a0,s5,zero
lw a3,-0x4(a0)
lw a2,0x0(a1)
bne a3,a2,0x0004f274
_addiu a0,a0,-0x4
addiu v0,v0,-0x1
bgez v0,0x0004ef2c
_addiu a1,a1,-0x4
beq s0,zero,0x0004ef90
_addiu a1,a1,0x4
li v0,0x1
beq s0,v0,0x0004ef88
_lw a0,0x0(s6)
lw v0,0x38(s8)
addiu s6,s6,0x4
addiu v0,v0,0x4
sw a0,-0x4(v0)
addiu s6,s6,0x4
bne s6,s5,0x0004ef64
_lw a0,-0x4(s6)
lw v0,0x38(s8)
addiu t0,t0,-0x4
addu v0,v0,t0
sw v0,0x38(s8)
lw v0,0x38(s8)
sw a0,0x0(v0)
sll t1,s7,0x2
or v0,s7,zero
addu t3,s3,t1
addu t1,s2,t1
or t2,t3,zero
or a2,t1,zero
or a1,t1,zero
b 0x0004efc4
_or a0,t3,zero
lw a3,-0x4(a0)
lw t0,0x0(a1)
bne a3,t0,0x0004fb2c
_addiu a0,a0,-0x4
addiu v0,v0,-0x1
bgez v0,0x0004efb4
_addiu a1,a1,-0x4
addiu a1,a1,0x4
lw v0,-0x4(t1)
bne v0,zero,0x0004eff0
_nop
addiu a2,a2,-0x4
lw v0,-0x4(a2)
beq v0,zero,0x0004efe0
_addiu s7,s7,-0x1
beq s7,zero,0x0004f044
_lw v0,0x34(s8)
addiu v0,s7,-0x1
beq v0,zero,0x0004f038
_lw a1,0x0(s2)
lw a0,0x3c(s8)
addiu s2,s2,0x4
addiu a0,a0,0x4
sw a1,-0x4(a0)
addiu s2,s2,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004f00c
_lw a1,-0x4(s2)
sll v0,s7,0x2
lw v1,0x3c(s8)
addiu v0,v0,-0x4
addu v0,v1,v0
sw v0,0x3c(s8)
lw v0,0x3c(s8)
sw a1,0x0(v0)
lw v0,0x34(s8)
or s1,s0,zero
lw a0,0x5c(s8)
beq a0,zero,0x0004f0dc
_sw s7,0x0(v0)
lw t9,-0x7a28(gp)
jalr t9
_nop
b 0x0004f0dc
_lw gp,0x20(s8)
lw v1,0x4c(s8)
li v0,0x1
addiu s0,s0,-0x4
lw t9,-0x7f28(gp)
lw a1,0x54(s8)
or a3,zero,zero
sw v0,0x0(s2)
addu s0,v1,s0
sw v1,0x18(sp)
addiu v1,s8,0x64
sw s0,0x80(s8)
or a2,s1,zero
sw v1,0x14(sp)
or a0,s6,zero
sw s3,0x78(s8)
sw s2,0x7c(s8)
sw v0,0x74(s8)
lw v1,-0x7d80(gp)
jalr t9
_sw v1,0x10(sp)
lw gp,0x20(s8)
beq v0,zero,0x0004f0cc
_or s0,v0,zero
b 0x0004ece0
_lw s7,0x74(s8)
lw a0,0x5c(s8)
bne a0,zero,0x0004f898
_lw t9,-0x7a28(gp)
lw s1,0x68(s8)
lw v1,0x30(s8)
or v0,s1,zero
lw a0,0x9c(s8)
lw v1,0x0(v1)
bne a0,v1,0x0004fc78
_lw t9,-0x7b70(gp)
or sp,s8,zero
lw ra,0xc4(sp)
lw s8,0xc0(sp)
lw s7,0xbc(sp)
lw s6,0xb8(sp)
lw s5,0xb4(sp)
lw s4,0xb0(sp)
lw s3,0xac(sp)
lw s2,0xa8(sp)
lw s1,0xa4(sp)
lw s0,0xa0(sp)
jr ra
_addiu sp,sp,0xc8
lw v1,0x4c(s8)
sll v0,s0,0x2
lw a0,-0x7d80(gp)
or a3,zero,zero
lw t9,-0x7f28(gp)
or a2,s0,zero
addu v0,v1,v0
lw a1,0x54(s8)
sw v1,0x18(sp)
sw a0,0x10(sp)
or a0,s6,zero
sw s3,0x78(s8)
sw s2,0x7c(s8)
sw v0,0x80(s8)
sw s7,0x74(s8)
lw v1,0x44(s8)
jalr t9
_sw v1,0x14(sp)
lw gp,0x20(s8)
beq v0,zero,0x0004f0cc
_or s0,v0,zero
slti v0,s0,0x258
beq v0,zero,0x0004ed0c
_lw s7,0x74(s8)
b 0x0004ef08
_lw v1,0x54(s8)
sll a0,s7,0x2
addu a1,s3,a0
addu a0,s2,a0
sw v1,0x0(a1)
sw v0,0x0(a0)
slti v0,s0,0x258
beq v0,zero,0x0004ed0c
_addiu s7,s7,0x1
b 0x0004ef08
_lw v1,0x54(s8)
or a2,s7,zero
lw a3,0x98(s8)
or a1,s2,zero
or a0,s1,zero
jalr t9
_sw t0,0x10(sp)
or a2,s7,zero
lw gp,0x20(s8)
or a1,s4,zero
lw v0,0x88(s8)
or a0,s2,zero
lw a3,0x90(s8)
lw t9,-0x7d8c(gp)
jalr t9
_sw v0,0x10(sp)
b 0x0004ee70
_lw gp,0x20(s8)
or a3,a1,zero
sw v0,0x10(sp)
or a2,s7,zero
or a1,s4,zero
jalr t9
_or a0,s1,zero
or a2,s7,zero
lw gp,0x20(s8)
or a1,s2,zero
lw v0,0x88(s8)
or a0,s3,zero
lw a3,0x94(s8)
lw t9,-0x7d8c(gp)
jalr t9
_sw v0,0x10(sp)
b 0x0004ee00
_lw gp,0x20(s8)
addiu a1,s3,0x4
or a0,s4,zero
addiu a0,a0,0x4
sw a2,-0x4(a0)
addiu a1,a1,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004f248
_lw a2,-0x4(a1)
lw v0,0x40(s8)
addu v0,s7,v0
sll v0,v0,0x2
b 0x0004eda8
_addu v0,s4,v0
lw v0,0x0(s3)
beq v0,zero,0x0004fa00
_li v0,0x1
lw v0,0x4c(s8)
addu t4,v0,t0
bne s0,zero,0x0004f3f8
_addu t5,t4,t0
addu v0,t5,t0
lw t9,-0x7ee0(gp)
lw a1,0x4c(s8)
addiu a2,s8,0x60
lw a0,0x38(s8)
or a3,t4,zero
sw t3,0x2c(s8)
sw t2,0x40(s8)
sw t1,0x44(s8)
sw t0,0x48(s8)
sw t4,0x50(s8)
sw s0,0x14(sp)
sw v0,0x18(sp)
jalr t9
_sw t5,0x10(sp)
lw gp,0x20(s8)
or s1,v0,zero
lw t4,0x50(s8)
lw t0,0x48(s8)
lw t1,0x44(s8)
lw t2,0x40(s8)
blez s7,0x0004fbbc
_lw t3,0x2c(s8)
sll v0,s7,0x2
addiu v0,v0,-0x4
addu a0,s3,v0
lw a0,0x0(a0)
bne a0,zero,0x0004f470
_addiu v0,v0,0x4
or s4,s7,zero
b 0x0004f31c
_addu v0,s3,v0
lw a0,-0x4(v0)
bne a0,zero,0x0004f478
_lw t5,0x60(s8)
addiu s4,s4,-0x1
bne s4,zero,0x0004f310
_addiu v0,v0,-0x4
lw t5,0x60(s8)
bne t5,zero,0x0004f508
_addiu v0,v0,0x4
lw v0,0x34(s8)
lw a0,0x5c(s8)
beq a0,zero,0x0004f0dc
_sw t5,0x0(v0)
b 0x0004f058
_lw t9,-0x7a28(gp)
or a2,zero,zero
lw t9,-0x7a2c(gp)
or a0,s3,zero
sw s1,0x18(sp)
or a3,s6,zero
sw v0,0x14(sp)
or a1,s6,zero
jalr t9
_sw t0,0x10(sp)
addu a0,s6,s7
lw gp,0x20(s8)
or v0,s1,zero
lw a1,-0x4(a0)
bne a1,zero,0x0004eb40
_addiu v0,v0,-0x1
bne v0,zero,0x0004f37c
_addiu a0,a0,-0x4
beq s1,zero,0x0004f3e4
_lw v0,0x34(s8)
lw v1,0x54(s8)
addiu v0,s1,-0x1
beq v0,zero,0x0004f3d8
_lw a1,0x0(v1)
lw a0,0x38(s8)
addiu v1,v1,0x4
addiu a0,a0,0x4
sw a1,-0x4(a0)
addiu v1,v1,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004f3b0
_lw a1,-0x4(v1)
lw v0,0x38(s8)
addiu v1,s7,-0x4
addu v0,v0,v1
sw v0,0x38(s8)
lw v0,0x38(s8)
sw a1,0x0(v0)
lw v0,0x34(s8)
lw a0,0x5c(s8)
beq a0,zero,0x0004f0dc
_sw zero,0x0(v0)
b 0x0004f058
_lw t9,-0x7a28(gp)
lw v1,0x54(s8)
li v0,0x1
lw a1,0x0(s6)
beq s0,v0,0x0004f7c0
_lw a2,0x0(v1)
addiu v0,s6,0x4
or a0,t4,zero
addiu a0,a0,0x4
sw a1,-0x4(a0)
addiu v0,v0,0x4
bne v0,s5,0x0004f414
_lw a1,-0x4(v0)
lw v0,0x54(s8)
or a0,t5,zero
sw a1,-0x4(t5)
addiu v0,v0,0x4
addiu a0,a0,0x4
sw a2,-0x4(a0)
addiu v0,v0,0x4
bne v0,t3,0x0004f438
_lw a2,-0x4(v0)
addiu v0,t0,-0x4
addu v0,t5,v0
b 0x0004f290
_sw a2,0x0(v0)
sw a3,0x0(s3)
or v0,s2,zero
lw a2,0x0(t1)
b 0x0004ec98
_sw a2,0x0(v0)
or s4,s7,zero
lw t5,0x60(s8)
bne t5,zero,0x0004f508
_addiu v0,s4,-0x1
beq v0,zero,0x0004f4bc
_lw a0,0x0(s3)
lw v1,0x3c(s8)
addiu s3,s3,0x4
addiu v1,v1,0x4
sw a0,-0x4(v1)
addiu s3,s3,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004f490
_lw a0,-0x4(s3)
sll v0,s4,0x2
lw v1,0x3c(s8)
addiu v0,v0,-0x4
addu v0,v1,v0
sw v0,0x3c(s8)
lw v0,0x3c(s8)
subu t5,zero,s4
b 0x0004f334
_sw a0,0x0(v0)
or a3,s6,zero
lw a2,0x34(s8)
sw s3,0x18(sp)
sw s1,0x14(sp)
lw v0,0x54(s8)
lw a0,0x38(s8)
lw a1,0x3c(s8)
jalr t9
_sw v0,0x10(sp)
lw a0,0x5c(s8)
or s1,v0,zero
beq a0,zero,0x0004f0dc
_lw gp,0x20(s8)
b 0x0004f058
_lw t9,-0x7a28(gp)
addiu t0,t0,0x4
or t6,t5,zero
bgez t5,0x0004f51c
_addu t0,t4,t0
subu t6,zero,t5
blez s0,0x0004fc40
_nop
lw v0,-0x4(s5)
beq v0,zero,0x0004f544
_or s5,s0,zero
b 0x0004f7f0
_slt v0,s5,t6
lw v0,-0x4(t1)
bne v0,zero,0x0004f7f0
_slt v0,s5,t6
addiu s5,s5,-0x1
bne s5,zero,0x0004f538
_addiu t1,t1,-0x4
lw t9,-0x7d8c(gp)
or a2,t6,zero
lw a1,0x4c(s8)
or a0,t0,zero
sw t3,0x28(s8)
or a3,s6,zero
sw t2,0x2c(s8)
sw t4,0x40(s8)
sw t5,0x44(s8)
sw t6,0x48(s8)
sw t0,0x50(s8)
jalr t9
_sw s5,0x10(sp)
lw gp,0x20(s8)
lw t3,0x28(s8)
lw t2,0x2c(s8)
lw t4,0x40(s8)
lw t5,0x44(s8)
lw t6,0x48(s8)
lw t0,0x50(s8)
blez t5,0x0004f854
_addu s5,t6,s5
bne s1,zero,0x0004fa78
_lw t9,-0x7b2c(gp)
blez s5,0x0004f718
_sll v0,s5,0x2
addu v0,t0,v0
lw v0,-0x4(v0)
bne v0,zero,0x0004f720
_sll v0,s5,0x2
b 0x0004f5e0
_addu v0,t0,v0
lw a0,-0x4(v0)
bne a0,zero,0x0004f728
_nop
or s5,s6,zero
addiu s6,s5,-0x1
bne s6,zero,0x0004f5d0
_addiu v0,v0,-0x4
addiu v0,v0,0x4
lw a2,0x60(s8)
blez a2,0x0004f848
_li s0,0x1
or s0,zero,zero
blez s7,0x0004f63c
_sll v0,s7,0x2
addiu v0,v0,-0x4
addu a0,s2,v0
lw a0,0x0(a0)
bne a0,zero,0x0004f63c
_addiu v0,v0,0x4
b 0x0004f630
_addu v0,s2,v0
lw a0,-0x4(v0)
bne a0,zero,0x0004f63c
_nop
addiu s7,s7,-0x1
bne s7,zero,0x0004f624
_addiu v0,v0,-0x4
slt v0,s7,a2
lw t9,-0x7d8c(gp)
bne v0,zero,0x0004f7d0
_sw t4,0x54(s8)
lw a3,0x4c(s8)
or a1,s2,zero
lw a0,0x3c(s8)
sw a2,0x10(sp)
jalr t9
_or a2,s7,zero
lw gp,0x20(s8)
lw t4,0x54(s8)
lw s5,0x60(s8)
lw a0,0x3c(s8)
addu v1,s7,s5
sll v0,v1,0x2
addu v0,a0,v0
lw s5,-0x4(v0)
sltiu s5,s5,0x1
blez s6,0x0004f6f8
_subu s5,v1,s5
slt v0,s4,s6
beq v0,zero,0x0004f878
_lw t9,-0x7d8c(gp)
or a3,s3,zero
sw s4,0x10(sp)
or a2,s6,zero
or a1,t4,zero
jalr t9
_or a0,s2,zero
lw gp,0x20(s8)
addu s3,s6,s4
sll v0,s3,0x2
addu v0,s2,v0
lw v0,-0x4(v0)
sltiu v0,v0,0x1
subu s3,s3,v0
slt v0,s5,s3
bne v0,zero,0x0004fa20
_nop
bne s3,zero,0x0004f95c
_or a2,s2,zero
or v0,zero,zero
sll v1,s5,0x2
lw a0,0x3c(s8)
addu v1,a0,v1
sw v0,0x0(v1)
beq s0,zero,0x0004f704
_lw v0,0x34(s8)
subu s5,zero,s5
lw a0,0x5c(s8)
beq a0,zero,0x0004f0dc
_sw s5,0x0(v0)
b 0x0004f058
_lw t9,-0x7a28(gp)
beq s5,zero,0x0004f5f0
_or s6,zero,zero
or s6,s5,zero
addiu s5,s5,0x1
blez s0,0x0004f764
_lw t9,-0x7b8c(gp)
lw v0,-0x4(t3)
beq v0,zero,0x0004f754
_addiu s0,s0,-0x1
b 0x0004f764
_addiu s0,s0,0x1
lw v0,-0x4(t2)
bne v0,zero,0x0004f764
_lw t9,-0x7b8c(gp)
addiu s0,s0,-0x1
bne s0,zero,0x0004f744
_addiu t2,t2,-0x4
addiu t2,t2,0x4
lw t9,-0x7b8c(gp)
subu s5,s5,s0
lw a3,0x54(s8)
or a2,s6,zero
or a0,t4,zero
sw t4,0x54(s8)
sw s0,0x10(sp)
jalr t9
_or a1,t0,zero
sll v0,s5,0x2
lw t4,0x54(s8)
lw gp,0x20(s8)
addu v0,t4,v0
lw s6,-0x4(v0)
sltiu s6,s6,0x1
b 0x0004f5f0
_subu s6,s5,s6
addiu a0,s8,0x5c
jalr t9
_sw t0,0xd8(s8)
lw gp,0x20(s8)
or s3,v0,zero
b 0x0004eb34
_lw t0,0xd8(s8)
or v0,t5,zero
sw a1,0x0(t4)
b 0x0004f290
_sw a2,0x0(v0)
lw a1,0x4c(s8)
or a3,s2,zero
lw a0,0x3c(s8)
jalr t9
_sw s7,0x10(sp)
lw gp,0x20(s8)
b 0x0004f66c
_lw t4,0x54(s8)
bne v0,zero,0x0004f550
_lw t9,-0x7d8c(gp)
or a0,t0,zero
lw a3,0x4c(s8)
or a2,s5,zero
sw t3,0x28(s8)
or a1,s6,zero
sw t2,0x2c(s8)
sw t4,0x40(s8)
sw t5,0x44(s8)
sw t6,0x10(sp)
sw t6,0x48(s8)
jalr t9
_sw t0,0x50(s8)
lw gp,0x20(s8)
lw t0,0x50(s8)
lw t6,0x48(s8)
lw t5,0x44(s8)
lw t4,0x40(s8)
lw t2,0x2c(s8)
b 0x0004f5a0
_lw t3,0x28(s8)
subu a2,zero,a2
b 0x0004f600
_sw a2,0x60(s8)
bne s1,zero,0x0004f8a8
_lw t9,-0x7d0c(gp)
sll v0,s5,0x2
addu v0,t0,v0
lw s6,-0x4(v0)
sltiu s6,s6,0x1
subu s6,s5,s6
b 0x0004f728
_addiu s5,s6,0x1
or a3,t4,zero
sw s6,0x10(sp)
or a2,s4,zero
or a1,s3,zero
jalr t9
_or a0,s2,zero
b 0x0004f6b8
_lw gp,0x20(s8)
jalr t9
_nop
b 0x0004f0d8
_lw gp,0x20(s8)
or a1,t0,zero
lw a2,0x38(s8)
or a0,t0,zero
sw t3,0x40(s8)
or a3,s1,zero
sw t2,0x44(s8)
sw t4,0x48(s8)
jalr t9
_sw t0,0x50(s8)
lw gp,0x20(s8)
lw t0,0x50(s8)
lw t4,0x48(s8)
lw t2,0x44(s8)
beq v0,zero,0x0004f85c
_lw t3,0x40(s8)
slt v0,s1,s5
beq v0,zero,0x0004f85c
_sll v0,s1,0x2
addiu a2,s1,0x1
addu a0,t0,v0
lw a1,0x0(a0)
addiu a1,a1,0x1
bne a1,zero,0x0004f85c
_sw a1,0x0(a0)
slt a1,a2,s5
beq a1,zero,0x0004f85c
_addiu v0,v0,0x4
addu v0,t0,v0
addiu a1,s1,0x2
lw a2,0x0(v0)
addiu a2,a2,0x1
beq a2,zero,0x0004f94c
_sw a2,0x0(v0)
b 0x0004f860
_sll v0,s5,0x2
lw v0,0x8(a0)
addiu a0,a0,0x4
addiu a1,a1,0x1
addiu v0,v0,0x1
bne v0,zero,0x0004f85c
_sw v0,0x4(a0)
bne s5,a1,0x0004f934
_sll v0,s5,0x2
b 0x0004f864
_addu v0,t0,v0
lw s2,0x3c(s8)
lw t9,-0x7d0c(gp)
or a3,s3,zero
or a1,s2,zero
jalr t9
_or a0,s2,zero
beq v0,zero,0x0004f6e8
_lw gp,0x20(s8)
sll v1,s3,0x2
addiu v0,s3,0x1
beq s5,s3,0x0004fc80
_addu a0,s2,v1
lw v1,0x0(a0)
addiu v1,v1,0x1
bne v1,zero,0x0004f6e4
_sw v1,0x0(a0)
slt v1,v0,s5
beq v1,zero,0x0004f9ec
_nop
sll v0,v0,0x2
addiu s3,s3,0x2
addu v1,s2,v0
lw v0,0x0(v1)
addiu v0,v0,0x1
bne v0,zero,0x0004f6e4
_sw v0,0x0(v1)
b 0x0004f9e4
_or v1,a0,zero
lw a0,0x8(v1)
addiu v1,v1,0x4
addiu s3,s3,0x1
addiu a0,a0,0x1
bne a0,zero,0x0004f6e8
_sw a0,0x4(v1)
bne s5,s3,0x0004f9cc
_nop
or s3,s5,zero
li v0,0x1
addiu s5,s5,0x1
b 0x0004f6ec
_sll v1,s3,0x2
bne s7,v0,0x0004f284
_lw v0,0x4c(s8)
or a3,s6,zero
lw t9,-0x7ee0(gp)
lw a2,0x34(s8)
sw v0,0x18(sp)
b 0x0004f4dc
_sw s0,0x14(sp)
bne s5,zero,0x0004fbd8
_lw a0,0x3c(s8)
lw v0,0x3c(s8)
beq v0,s2,0x0004fc34
_slt v1,s5,s3
beq v1,zero,0x0004fc34
_nop
subu v0,s3,s5
lw t9,-0x7afc(gp)
li a2,0x4
sll v0,v0,0x2
sll a0,s5,0x2
movn a2,v0,v1
or s5,s3,zero
addu a1,s2,a0
lw v0,0x3c(s8)
jalr t9
_addu a0,v0,a0
or v0,zero,zero
lw gp,0x20(s8)
b 0x0004f6ec
_sll v1,s3,0x2
or a1,t0,zero
lw a2,0x38(s8)
or a0,t0,zero
sw t3,0x40(s8)
or a3,s1,zero
sw t2,0x44(s8)
sw t4,0x48(s8)
jalr t9
_sw t0,0x50(s8)
lw gp,0x20(s8)
lw t0,0x50(s8)
lw t4,0x48(s8)
lw t2,0x44(s8)
beq v0,zero,0x0004f5b0
_lw t3,0x40(s8)
slt v0,s1,s5
beq v0,zero,0x0004f5b0
_sll a0,s1,0x2
addiu a1,s1,0x1
addu v0,t0,a0
lw a2,0x0(v0)
addiu a3,a2,-0x1
bne a2,zero,0x0004f5b0
_sw a3,0x0(v0)
slt a1,a1,s5
beq a1,zero,0x0004f5b0
_addiu a0,a0,0x4
addu a1,t0,a0
addiu a0,s1,0x2
lw a2,0x0(a1)
addiu a3,a2,-0x1
beq a2,zero,0x0004fb1c
_sw a3,0x0(a1)
b 0x0004f5b0
_nop
lw a1,0x8(v0)
addiu v0,v0,0x4
addiu a0,a0,0x1
addiu a2,a1,-0x1
bne a1,zero,0x0004f5b0
_sw a2,0x4(v0)
bne s5,a0,0x0004fb04
_nop
b 0x0004f5b0
_nop
sltu a3,t0,a3
bne a3,zero,0x0004efd4
_nop
blez s7,0x0004fc68
_nop
lw v0,-0x4(t3)
bne v0,zero,0x0004fb70
_addiu v0,s7,-0x1
addiu s7,s7,-0x1
beq s7,zero,0x0004f044
_lw v0,0x34(s8)
addiu t2,t2,-0x4
lw v0,-0x4(t2)
beq v0,zero,0x0004fb50
_addiu s7,s7,-0x1
addiu s7,s7,0x1
addiu v0,s7,-0x1
beq v0,zero,0x0004fbac
_lw a1,0x0(s3)
lw a0,0x3c(s8)
addiu s3,s3,0x4
addiu a0,a0,0x4
sw a1,-0x4(a0)
addiu s3,s3,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004fb80
_lw a1,-0x4(s3)
sll v0,s7,0x2
lw v1,0x3c(s8)
addiu v0,v0,-0x4
addu v0,v1,v0
sw v0,0x3c(s8)
lw v0,0x3c(s8)
subu s7,zero,s7
b 0x0004f040
_sw a1,0x0(v0)
lw t5,0x60(s8)
bne t5,zero,0x0004f508
_or s4,s7,zero
beq s7,zero,0x0004f338
_lw v0,0x34(s8)
b 0x0004f480
_addiu v0,s4,-0x1
or a3,s5,zero
lw t9,-0x7d0c(gp)
or a1,s2,zero
jalr t9
_or a2,a0,zero
beq v0,zero,0x0004fc48
_lw gp,0x20(s8)
lw v0,0x3c(s8)
sll v1,s5,0x2
addu a0,s2,v1
addu v1,v0,v1
lw v0,0x0(a0)
addiu s5,s5,0x1
addiu v0,v0,0x1
bne v0,zero,0x0004fa28
_sw v0,0x0(v1)
addiu a0,a0,0x4
bne s3,s5,0x0004fc04
_addiu v1,v1,0x4
addiu s5,s5,0x1
li v0,0x1
b 0x0004f6ec
_sll v1,s3,0x2
or s5,s3,zero
b 0x0004f6e8
_or v0,zero,zero
b 0x0004f550
_or s5,s0,zero
lw v1,0x3c(s8)
beq v1,s2,0x0004fc5c
_nop
b 0x0004fa3c
_slt v1,s5,s3
or s5,s3,zero
b 0x0004f6ec
_sll v1,s3,0x2
beq s7,zero,0x0004f040
_addiu v0,s7,-0x1
b 0x0004fb70
_nop
jalr t9
_nop
or s5,v0,zero
b 0x0004f6ec
_li v0,0x1
(translation_unit "uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)\n\n{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}\n\n" (function_definition "uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)\n\n{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" type_identifier (function_declarator "__gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" ( (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 "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined8 uVar25;" type_identifier identifier ;) (declaration "undefined1 auStack_c8 [32];" type_identifier (array_declarator "auStack_c8 [32]" identifier [ number_literal ]) ;) (declaration "int *local_90;" primitive_type (pointer_declarator "*local_90" * identifier) ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined1 auStack_44 [4];" type_identifier (array_declarator "auStack_44 [4]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar24 = auStack_c8;" (assignment_expression "puVar24 = auStack_c8" identifier = identifier) ;) (expression_statement "uVar16 = param_7 * 4 + 3;" (assignment_expression "uVar16 = param_7 * 4 + 3" identifier = (binary_expression "param_7 * 4 + 3" (binary_expression "param_7 * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "uVar5 = (param_5 - param_7) + 1;" (assignment_expression "uVar5 = (param_5 - param_7) + 1" identifier = (binary_expression "(param_5 - param_7) + 1" (parenthesized_expression "(param_5 - param_7)" ( (binary_expression "param_5 - param_7" identifier - identifier) )) + number_literal)) ;) (if_statement "if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }" if (parenthesized_expression "((int)uVar16 <= (int)uVar5)" ( (binary_expression "(int)uVar16 <= (int)uVar5" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar16 = uVar5;\n  }" { (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" identifier = identifier) ;) })) (expression_statement "iVar22 = param_7 + 1;" (assignment_expression "iVar22 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar5 = uVar16 << 2;" (assignment_expression "uVar5 = uVar16 << 2" identifier = (binary_expression "uVar16 << 2" identifier << number_literal)) ;) (expression_statement "iVar18 = (int)param_7 >> 1;" (assignment_expression "iVar18 = (int)param_7 >> 1" identifier = (binary_expression "(int)param_7 >> 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" if (parenthesized_expression "(599 < (int)param_7)" ( (binary_expression "599 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" { (expression_statement "iVar6 = (int)param_7 / 3;" (assignment_expression "iVar6 = (int)param_7 / 3" identifier = (binary_expression "(int)param_7 / 3" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) / number_literal)) ;) (expression_statement "iVar20 = iVar6;" (assignment_expression "iVar20 = iVar6" identifier = identifier) ;) (if_statement "if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }" if (parenthesized_expression "(iVar18 <= iVar6)" ( (binary_expression "iVar18 <= iVar6" identifier <= identifier) )) (compound_statement "{\n      iVar20 = iVar18;\n    }" { (expression_statement "iVar20 = iVar18;" (assignment_expression "iVar20 = iVar18" identifier = identifier) ;) })) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) (if_statement "if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }" if (parenthesized_expression "(iVar18 < iVar6)" ( (binary_expression "iVar18 < iVar6" identifier < identifier) )) (compound_statement "{\n      iVar17 = iVar6;\n    }" { (expression_statement "iVar17 = iVar6;" (assignment_expression "iVar17 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)()" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)()" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = param_7 + iVar17 + -1;" (assignment_expression "iVar17 = param_7 + iVar17 + -1" identifier = (binary_expression "param_7 + iVar17 + -1" (binary_expression "param_7 + iVar17" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }" if (parenthesized_expression "(iVar6 <= iVar17)" ( (binary_expression "iVar6 <= iVar17" identifier <= identifier) )) (compound_statement "{\n      iVar6 = iVar17;\n    }" { (expression_statement "iVar6 = iVar17;" (assignment_expression "iVar6 = iVar17" identifier = identifier) ;) })) (expression_statement "uVar5 = 0x106b;" (assignment_expression "uVar5 = 0x106b" identifier = number_literal) ;) (if_statement "if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }" if (parenthesized_expression "(0x106a < (int)uVar16)" ( (binary_expression "0x106a < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar5 = uVar16;\n    }" { (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) })) (expression_statement "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;" (assignment_expression "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" identifier = (binary_expression "((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" (parenthesized_expression "((int)((param_7 - iVar20) + 1) / 2 + 1)" ( (binary_expression "(int)((param_7 - iVar20) + 1) / 2 + 1" (binary_expression "(int)((param_7 - iVar20) + 1) / 2" (cast_expression "(int)((param_7 - iVar20) + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((param_7 - iVar20) + 1)" ( (binary_expression "(param_7 - iVar20) + 1" (parenthesized_expression "(param_7 - iVar20)" ( (binary_expression "param_7 - iVar20" identifier - identifier) )) + number_literal) ))) / number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar16 = iVar6 + unaff_s4;" (assignment_expression "uVar16 = iVar6 + unaff_s4" identifier = (binary_expression "iVar6 + unaff_s4" identifier + identifier)) ;) (if_statement "if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }" if (parenthesized_expression "(iVar6 + unaff_s4 < (int)uVar5)" ( (binary_expression "iVar6 + unaff_s4 < (int)uVar5" (binary_expression "iVar6 + unaff_s4" identifier + identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar16 = uVar5;\n    }" { (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar16 = iVar22 * 2 + uVar16;" (assignment_expression "uVar16 = iVar22 * 2 + uVar16" identifier = (binary_expression "iVar22 * 2 + uVar16" (binary_expression "iVar22 * 2" identifier * number_literal) + identifier)) ;) (expression_statement "uVar5 = uVar16 * 4;" (assignment_expression "uVar5 = uVar16 * 4" identifier = (binary_expression "uVar16 * 4" identifier * number_literal)) ;) })) (if_statement "if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" if (parenthesized_expression "(uVar5 < 0x7f01)" ( (binary_expression "uVar5 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }" { (expression_statement "iVar6 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar5 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" ( (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar24 = auStack_c8 + iVar6;" (assignment_expression "puVar24 = auStack_c8 + iVar6" identifier = (binary_expression "auStack_c8 + iVar6" identifier + identifier)) ;) (expression_statement "piVar14 = (int *)(&stack0xffffff58 + iVar6);" (assignment_expression "piVar14 = (int *)(&stack0xffffff58 + iVar6)" identifier = (cast_expression "(int *)(&stack0xffffff58 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffff58 + iVar6)" ( (binary_expression "&stack0xffffff58 + iVar6" (pointer_expression "&stack0xffffff58" & identifier) + identifier) )))) ;) }) (else_clause "else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" else (compound_statement "{\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" { (expression_statement "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);" (assignment_expression "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_6c)" ( (pointer_expression "&local_6c" & identifier) ))))) ;) }))) (expression_statement "local_90 = param_1;" (assignment_expression "local_90 = param_1" identifier = identifier) ;) (expression_statement "local_8c = param_2;" (assignment_expression "local_8c = param_2" identifier = identifier) ;) (if_statement "if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "((int)param_7 < param_5)" ( (binary_expression "(int)param_7 < param_5" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "*(uint *)(puVar24 + 0x18) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x18) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x18)" * (cast_expression "(uint *)(puVar24 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x14) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x14) = param_6" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = param_5;" (assignment_expression "*(int *)(puVar24 + 0x10) = param_5" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);" (call_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)" ( (pointer_expression "*(code *)PTR___gmpn_tdiv_qr_0009d614" * (cast_expression "(code *)PTR___gmpn_tdiv_qr_0009d614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,param_4,0,param_4)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar9 = param_4 + param_7;" (assignment_expression "piVar9 = param_4 + param_7" identifier = (binary_expression "param_4 + param_7" identifier + identifier)) ;) (expression_statement "uVar5 = param_7;" (assignment_expression "uVar5 = param_7" identifier = identifier) ;) (do_statement "do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);" do (compound_statement "{\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if (piVar9[-1] != 0) goto LAB_0004eb40;" if (parenthesized_expression "(piVar9[-1] != 0)" ( (binary_expression "piVar9[-1] != 0" (subscript_expression "piVar9[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0004eb40;" goto statement_identifier ;)) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" identifier = (binary_expression "piVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) ;) (if_statement "if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" { (expression_statement "iVar22 = param_7 - 1;" (assignment_expression "iVar22 = param_7 - 1" identifier = (binary_expression "param_7 - 1" identifier - number_literal)) ;) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar14 = param_1;" (assignment_expression "piVar14 = param_1" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" { (do_statement "do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar18;" (assignment_expression "*piVar14 = iVar18" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_90 = param_1 + (param_7 - 1);" (assignment_expression "local_90 = param_1 + (param_7 - 1)" identifier = (binary_expression "param_1 + (param_7 - 1)" identifier + (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) })) (labeled_statement "LAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" statement_identifier : (if_statement "if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" if (parenthesized_expression "(599 < (int)param_7)" ( (binary_expression "599 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" { (if_statement "if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8)" (parenthesized_expression "(*(code *)PTR_memset_0009d2e8)" ( (pointer_expression "*(code *)PTR_memset_0009d2e8" * (cast_expression "(code *)PTR_memset_0009d2e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,0,iVar22 * 8)" ( identifier , number_literal , (binary_expression "iVar22 * 8" identifier * number_literal) ))) ;) })) (expression_statement "piVar23 = piVar14 + iVar22;" (assignment_expression "piVar23 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "local_5c = param_2;" (assignment_expression "local_5c = param_2" identifier = identifier) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,param_7 - iVar18,piVar9)" ( identifier , (binary_expression "param_7 - iVar18" identifier - identifier) , identifier ))) ;) (expression_statement "piVar13 = piVar9 + unaff_s4;" (assignment_expression "piVar13 = piVar9 + unaff_s4" identifier = (binary_expression "piVar9 + unaff_s4" identifier + identifier)) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" ( (binary_expression "param_4 + iVar18" identifier + identifier) , (binary_expression "param_6 + iVar18" identifier + identifier) , (binary_expression "param_7 - iVar18" identifier - identifier) , identifier )))) ;) (if_statement "if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }" { (expression_statement "*piVar23 = 1;" (assignment_expression "*piVar23 = 1" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_48 = piVar9 + param_7;" (assignment_expression "local_48 = piVar9 + param_7" identifier = (binary_expression "piVar9 + param_7" identifier + identifier)) ;) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" * (cast_expression "(int ***)(puVar24 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" identifier = identifier) ;) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" identifier = identifier) ;) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" * (cast_expression "(undefined **)(puVar24 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_6,param_7,0)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" identifier = identifier) ;) (if_statement "if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" { (labeled_statement "LAB_0004f0cc:\n        param_7 = local_60;" statement_identifier : (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" identifier = identifier) ;)) (if_statement "if (local_6c == 0) goto LAB_0004f0dc;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" identifier = identifier) ;) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;) })) }) (else_clause "else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" else (compound_statement "{\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar18 + iVar22,param_4,param_6)" ( identifier , (binary_expression "iVar18 + iVar22" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "piVar8 = local_30;" (assignment_expression "piVar8 = local_30" identifier = identifier) ;) (expression_statement "iVar22 = local_40;" (assignment_expression "iVar22 = local_40" identifier = identifier) ;) (if_statement "if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" { (expression_statement "iVar6 = local_40 + -1;" (assignment_expression "iVar6 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *local_34;" (assignment_expression "iVar20 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "iVar18 = iVar6;" (assignment_expression "iVar18 = iVar6" identifier = identifier) ;) (expression_statement "piVar7 = piVar14;" (assignment_expression "piVar7 = piVar14" identifier = identifier) ;) (expression_statement "piVar10 = local_34;" (assignment_expression "piVar10 = local_34" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }" { (expression_statement "*piVar14 = iVar20;" (assignment_expression "*piVar14 = iVar20" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "*piVar23 = *piVar8;" (assignment_expression "*piVar23 = *piVar8" (pointer_expression "*piVar23" * identifier) = (pointer_expression "*piVar8" * identifier)) ;) }) (else_clause "else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" else (compound_statement "{\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" { (do_statement "do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);" do (compound_statement "{\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          }" { (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = piVar10[1];" (assignment_expression "iVar20 = piVar10[1]" identifier = (subscript_expression "piVar10[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "piVar14[iVar22 + -1] = iVar20;" (assignment_expression "piVar14[iVar22 + -1] = iVar20" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar23;" (assignment_expression "piVar7 = piVar23" identifier = identifier) ;) (do_statement "do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);" do (compound_statement "{\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          }" { (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar23[iVar22 + -1] = iVar18;" (assignment_expression "piVar23[iVar22 + -1] = iVar18" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) }))) })) (if_statement "if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" if (parenthesized_expression "(piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0)" ( (binary_expression "piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0" (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) && (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" { (expression_statement "piVar7 = piVar14 + iVar22 + -2;" (assignment_expression "piVar7 = piVar14 + iVar22 + -2" identifier = (binary_expression "piVar14 + iVar22 + -2" (binary_expression "piVar14 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "piVar8 = piVar23 + iVar22 + -2;" (assignment_expression "piVar8 = piVar23 + iVar22 + -2" identifier = (binary_expression "piVar23 + iVar22 + -2" (binary_expression "piVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);" do (compound_statement "{\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        }" { (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" ( (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" identifier == number_literal) && (binary_expression "iVar6 == 0" identifier == number_literal)) )) ;) })) }))) (if_statement "if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" if (parenthesized_expression "(599 < (int)uVar16)" ( (binary_expression "599 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);" do (compound_statement "{\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      }" { (while_statement "while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" { (expression_statement "uVar5 = uVar16 / 3;" (assignment_expression "uVar5 = uVar16 / 3" identifier = (binary_expression "uVar16 / 3" identifier / number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar16 - uVar5,piVar9)" ( identifier , (binary_expression "uVar16 - uVar5" identifier - identifier) , identifier ))) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" ( (binary_expression "param_4 + uVar5" identifier + identifier) , (binary_expression "param_6 + uVar5" identifier + identifier) , (binary_expression "uVar16 - uVar5" identifier - identifier) , identifier )))) ;) (if_statement "if (iVar18 < 1) break;" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar5 + iVar18,param_4,param_6)" ( identifier , (binary_expression "uVar5 + iVar18" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "uVar4 = local_3c;" (assignment_expression "uVar4 = local_3c" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" { (expression_statement "iVar6 = iVar22 + -1;" (assignment_expression "iVar6 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" identifier = identifier) ;) (expression_statement "piVar8 = piVar14;" (assignment_expression "piVar8 = piVar14" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" { (do_statement "do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);" do (compound_statement "{\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              }" { (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = piVar8[1];" (assignment_expression "iVar20 = piVar8[1]" identifier = (subscript_expression "piVar8[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar7 = piVar13 + iVar22 + 0x3fffffff;" (assignment_expression "piVar7 = piVar13 + iVar22 + 0x3fffffff" identifier = (binary_expression "piVar13 + iVar22 + 0x3fffffff" (binary_expression "piVar13 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) })) (expression_statement "piVar8 = piVar13 + iVar22;" (assignment_expression "piVar8 = piVar13 + iVar22" identifier = (binary_expression "piVar13 + iVar22" identifier + identifier)) ;) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" if (parenthesized_expression "(local_40 < iVar22)" ( (binary_expression "local_40 < iVar22" identifier < identifier) )) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar13,iVar22,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar23,iVar22,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" else (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,uVar4,iVar18,piVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar7,iVar18,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar14,piVar8,iVar22 + local_40)" ( identifier , identifier , identifier , (binary_expression "iVar22 + local_40" identifier + identifier) )))) ;) (expression_statement "piVar7 = local_30;" (assignment_expression "piVar7 = local_30" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" if (parenthesized_expression "(local_40 < iVar22)" ( (binary_expression "local_40 < iVar22" identifier < identifier) )) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar23,iVar22,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar13,iVar22,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" else (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar7,iVar18,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,uVar4,iVar18,piVar13)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar23,piVar8,iVar22 + local_40)" ( identifier , identifier , identifier , (binary_expression "iVar22 + local_40" identifier + identifier) )))) ;) (expression_statement "iVar22 = iVar22 + local_40;" (assignment_expression "iVar22 = iVar22 + local_40" identifier = (binary_expression "iVar22 + local_40" identifier + identifier)) ;) (if_statement "if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" if (parenthesized_expression "(iVar6 == 0 && iVar18 == 0)" ( (binary_expression "iVar6 == 0 && iVar18 == 0" (binary_expression "iVar6 == 0" identifier == number_literal) && (binary_expression "iVar18 == 0" identifier == number_literal)) )) (compound_statement "{\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }" { (if_statement "if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" if (parenthesized_expression "(piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0)" ( (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0" (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar14[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal) && (binary_expression "piVar23[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar23[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" { (expression_statement "piVar7 = piVar14 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar7 = piVar14 + iVar22 + 0x3ffffffe" identifier = (binary_expression "piVar14 + iVar22 + 0x3ffffffe" (binary_expression "piVar14 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "piVar8 = piVar23 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar8 = piVar23 + iVar22 + 0x3ffffffe" identifier = (binary_expression "piVar23 + iVar22 + 0x3ffffffe" (binary_expression "piVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);" do (compound_statement "{\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              }" { (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" ( (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" identifier == number_literal) && (binary_expression "iVar6 == 0" identifier == number_literal)) )) ;) })) }) (else_clause "else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" else (compound_statement "{\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" { (expression_statement "piVar14[iVar22] = iVar6;" (assignment_expression "piVar14[iVar22] = iVar6" (subscript_expression "piVar14[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar23[iVar22] = iVar18;" (assignment_expression "piVar23[iVar22] = iVar18" (subscript_expression "piVar23[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) }))) (if_statement "if ((int)uVar16 < 600) goto LAB_0004ef08;" if (parenthesized_expression "((int)uVar16 < 600)" ( (binary_expression "(int)uVar16 < 600" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004ef08;" goto statement_identifier ;)) })) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" * (cast_expression "(undefined **)(puVar24 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_54 = iVar22;" (assignment_expression "local_54 = iVar22" identifier = identifier) ;) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" identifier = identifier) ;) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" identifier = identifier) ;) (expression_statement "local_48 = piVar9 + uVar16;" (assignment_expression "local_48 = piVar9 + uVar16" identifier = (binary_expression "piVar9 + uVar16" identifier + identifier)) ;) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" * (cast_expression "(int ***)(puVar24 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_6,uVar16,0)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (uVar16 == 0) goto LAB_0004f0cc;" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f0cc;" goto statement_identifier ;)) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" identifier = identifier) ;) }) while (parenthesized_expression "(599 < (int)uVar16)" ( (binary_expression "599 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0004ef08:\n    piVar13 = param_4 + uVar16;" statement_identifier : (expression_statement "piVar13 = param_4 + uVar16;" (assignment_expression "piVar13 = param_4 + uVar16" identifier = (binary_expression "param_4 + uVar16" identifier + identifier)) ;)) (expression_statement "piVar8 = param_6 + uVar16;" (assignment_expression "piVar8 = param_6 + uVar16" identifier = (binary_expression "param_6 + uVar16" identifier + identifier)) ;) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" identifier = identifier) ;) (expression_statement "piVar10 = piVar8;" (assignment_expression "piVar10 = piVar8" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar5 < 0) break;" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = piVar7 + -1;" (assignment_expression "piVar12 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (if_statement "if (*piVar12 != *piVar10) goto LAB_0004f274;" if (parenthesized_expression "(*piVar12 != *piVar10)" ( (binary_expression "*piVar12 != *piVar10" (pointer_expression "*piVar12" * identifier) != (pointer_expression "*piVar10" * identifier)) )) (goto_statement "goto LAB_0004f274;" goto statement_identifier ;)) })) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" { (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (if_statement "if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (compound_statement "{\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" { (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) (expression_statement "piVar8 = param_4 + 1;" (assignment_expression "piVar8 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);" do (compound_statement "{\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        }" { (expression_statement "*piVar9 = iVar18;" (assignment_expression "*piVar9 = iVar18" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "piVar7 = piVar8 + 1;" (assignment_expression "piVar7 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "(piVar7 != piVar13)" ( (binary_expression "piVar7 != piVar13" identifier != identifier) )) ;) (expression_statement "local_90 = param_1 + (uVar16 - 1);" (assignment_expression "local_90 = param_1 + (uVar16 - 1)" identifier = (binary_expression "param_1 + (uVar16 - 1)" identifier + (parenthesized_expression "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "piVar13 = piVar14 + iVar22;" (assignment_expression "piVar13 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (expression_statement "puVar21 = (uint *)(piVar23 + iVar22);" (assignment_expression "puVar21 = (uint *)(piVar23 + iVar22)" identifier = (cast_expression "(uint *)(piVar23 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + iVar22)" ( (binary_expression "piVar23 + iVar22" identifier + identifier) )))) ;) (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" identifier = identifier) ;) (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" identifier = identifier) ;) (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" identifier = identifier) ;) (do_statement "do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);" do (compound_statement "{\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    }" { (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar18 < 0) goto LAB_0004efd4;" if (parenthesized_expression "(iVar18 < 0)" ( (binary_expression "iVar18 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(piVar9 + -1);" (assignment_expression "puVar1 = (uint *)(piVar9 + -1)" identifier = (cast_expression "(uint *)(piVar9 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9 + -1)" ( (binary_expression "piVar9 + -1" identifier + number_literal) )))) ;) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" identifier = (binary_expression "piVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == *puVar19)" ( (binary_expression "*puVar1 == *puVar19" (pointer_expression "*puVar1" * identifier) == (pointer_expression "*puVar19" * identifier)) )) ;) (if_statement "if (*puVar19 < *puVar1) goto LAB_0004efd4;" if (parenthesized_expression "(*puVar19 < *puVar1)" ( (binary_expression "*puVar19 < *puVar1" (pointer_expression "*puVar19" * identifier) < (pointer_expression "*puVar1" * identifier)) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (if_statement "if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 != 0) goto LAB_0004fb70;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fb70;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" else (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" if (parenthesized_expression "(piVar13[-1] == 0)" ( (binary_expression "piVar13[-1] == 0" (subscript_expression "piVar13[-1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" { (do_statement "do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);" do (compound_statement "{\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        }" { (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" identifier = identifier) ;) (expression_statement "iVar22 = iVar18 + -1;" (assignment_expression "iVar22 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) goto LAB_0004f044;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;)) (expression_statement "piVar9 = piVar13 + -2;" (assignment_expression "piVar9 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )) ;) (expression_statement "iVar18 = iVar18 + -2;" (assignment_expression "iVar18 = iVar18 + -2" identifier = (binary_expression "iVar18 + -2" identifier + number_literal)) ;) })) (labeled_statement "LAB_0004fb70:\n      iVar6 = *piVar14;" statement_identifier : (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;)) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" { (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);" do (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" identifier = (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;) }))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar14;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar14" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x14) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x14) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;" statement_identifier : (expression_statement "*(int **)(puVar24 + 0x10) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x10) = param_6" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (labeled_statement "joined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" statement_identifier : (while_statement "while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" { (if_statement "if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;" statement_identifier : (if_statement "if (local_2c == *(int *)puVar3) break;" 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))) )) (break_statement "break;" break ;))) (expression_statement "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();" (assignment_expression "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_0004fc80:\n    iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);" statement_identifier : (expression_statement "iVar22 = (int)((ulonglong)uVar25 >> 0x20);" (assignment_expression "iVar22 = (int)((ulonglong)uVar25 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar25 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar25 >> 0x20)" ( (binary_expression "(ulonglong)uVar25 >> 0x20" (cast_expression "(ulonglong)uVar25" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "*(int *)((int)local_8c + (int)uVar25) = iVar6;" (assignment_expression "*(int *)((int)local_8c + (int)uVar25) = iVar6" (pointer_expression "*(int *)((int)local_8c + (int)uVar25)" * (cast_expression "(int *)((int)local_8c + (int)uVar25)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_8c + (int)uVar25)" ( (binary_expression "(int)local_8c + (int)uVar25" (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (labeled_statement "LAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" statement_identifier : (if_statement "if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = -iVar22;\n    }" { (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) }))) (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" * identifier) = identifier) ;) }))) (return_statement "return param_7;" return identifier ;) (labeled_statement "LAB_0004efd4:\n  uVar5 = puVar21[-1];" statement_identifier : (expression_statement "uVar5 = puVar21[-1];" (assignment_expression "uVar5 = puVar21[-1]" identifier = (subscript_expression "puVar21[-1]" identifier [ number_literal ])) ;)) (while_statement "while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" while (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = puVar21[-2];" (assignment_expression "uVar5 = puVar21[-2]" identifier = (subscript_expression "puVar21[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" identifier = (binary_expression "puVar21 + -1" identifier + number_literal)) ;) })) (if_statement "if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "piVar14 = param_2;" (assignment_expression "piVar14 = param_2" identifier = identifier) ;) (if_statement "if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" { (do_statement "do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);" do (compound_statement "{\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      }" { (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar6;" (assignment_expression "*piVar14 = iVar6" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" identifier = (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" * identifier) = identifier) ;) })) (labeled_statement "LAB_0004f044:\n  *param_3 = iVar22;" statement_identifier : (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" * identifier) = identifier) ;)) (expression_statement "param_7 = uVar16;" (assignment_expression "param_7 = uVar16" identifier = identifier) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) (labeled_statement "LAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" statement_identifier : (if_statement "if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "((*piVar14 != 0) || (iVar22 != 1))" ( (binary_expression "(*piVar14 != 0) || (iVar22 != 1)" (parenthesized_expression "(*piVar14 != 0)" ( (binary_expression "*piVar14 != 0" (pointer_expression "*piVar14" * identifier) != number_literal) )) || (parenthesized_expression "(iVar22 != 1)" ( (binary_expression "iVar22 != 1" identifier != number_literal) ))) )) (compound_statement "{\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "piVar7 = piVar9 + uVar16;" (assignment_expression "piVar7 = piVar9 + uVar16" identifier = (binary_expression "piVar9 + uVar16" identifier + identifier)) ;) (expression_statement "piVar10 = piVar7 + uVar16;" (assignment_expression "piVar10 = piVar7 + uVar16" identifier = (binary_expression "piVar7 + uVar16" identifier + identifier)) ;) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" { (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "iVar6 = *param_6;" (assignment_expression "iVar6 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (if_statement "if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }" { (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "*piVar10 = iVar6;" (assignment_expression "*piVar10 = iVar6" (pointer_expression "*piVar10" * identifier) = identifier) ;) }) (else_clause "else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" else (compound_statement "{\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" { (expression_statement "piVar12 = param_4 + 1;" (assignment_expression "piVar12 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar7;" (assignment_expression "piVar15 = piVar7" identifier = identifier) ;) (do_statement "do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);" do (compound_statement "{\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" { (expression_statement "*piVar15 = iVar18;" (assignment_expression "*piVar15 = iVar18" (pointer_expression "*piVar15" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar12;" (assignment_expression "iVar18 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 != piVar13)" ( (binary_expression "piVar11 != piVar13" identifier != identifier) )) ;) (expression_statement "piVar10[-1] = iVar18;" (assignment_expression "piVar10[-1] = iVar18" (subscript_expression "piVar10[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = param_6 + 1;" (assignment_expression "piVar12 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) (do_statement "do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);" do (compound_statement "{\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" { (expression_statement "*piVar15 = iVar6;" (assignment_expression "*piVar15 = iVar6" (pointer_expression "*piVar15" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar12;" (assignment_expression "iVar6 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 != piVar8)" ( (binary_expression "piVar11 != piVar8" identifier != identifier) )) ;) (expression_statement "piVar10[uVar16 - 1] = iVar6;" (assignment_expression "piVar10[uVar16 - 1] = iVar6" (subscript_expression "piVar10[uVar16 - 1]" identifier [ (binary_expression "uVar16 - 1" identifier - number_literal) ]) = identifier) ;) }))) })) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x18) = piVar10 + uVar16;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar10 + uVar16" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = (binary_expression "piVar10 + uVar16" identifier + identifier)) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,piVar9,&local_68,piVar7)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) , identifier )))) ;) (expression_statement "iVar18 = local_68;" (assignment_expression "iVar18 = local_68" identifier = identifier) ;) (expression_statement "iVar6 = iVar22;" (assignment_expression "iVar6 = iVar22" identifier = identifier) ;) (if_statement "if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }" { (if_statement "if (local_68 != 0) goto LAB_0004f508;" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;)) (if_statement "if (iVar22 != 0) goto LAB_0004f480;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f480;" goto statement_identifier ;)) }) (else_clause "else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" else (compound_statement "{\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" { (if_statement "if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" if (parenthesized_expression "(piVar14[iVar22 + -1] == 0)" ( (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" { (expression_statement "piVar10 = piVar14 + iVar22;" (assignment_expression "piVar10 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" { (if_statement "if (local_68 == 0) goto LAB_0004f338;" if (parenthesized_expression "(local_68 == 0)" ( (binary_expression "local_68 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f338;" goto statement_identifier ;)) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar10 + -2;" (assignment_expression "piVar12 = piVar10 + -2" identifier = (binary_expression "piVar10 + -2" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" { (labeled_statement "LAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;" statement_identifier : (expression_statement "piVar10 = piVar7 + uVar16 + 1;" (assignment_expression "piVar10 = piVar7 + uVar16 + 1" identifier = (binary_expression "piVar7 + uVar16 + 1" (binary_expression "piVar7 + uVar16" identifier + identifier) + number_literal)) ;)) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" identifier = identifier) ;) (if_statement "if (local_68 < 0) {\n          iVar20 = -local_68;\n        }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar20 = -local_68;\n        }" { (expression_statement "iVar20 = -local_68;" (assignment_expression "iVar20 = -local_68" identifier = (unary_expression "-local_68" - identifier)) ;) })) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) (if_statement "if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }" { (labeled_statement "LAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;" statement_identifier : (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar9,iVar20,param_4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" else (compound_statement "{\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" { (expression_statement "iVar17 = piVar13[-1];" (assignment_expression "iVar17 = piVar13[-1]" identifier = (subscript_expression "piVar13[-1]" identifier [ number_literal ])) ;) (while_statement "while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" while (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if (uVar5 == 0) goto LAB_0004f550;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "iVar17 = piVar13[-2];" (assignment_expression "iVar17 = piVar13[-2]" identifier = (subscript_expression "piVar13[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) })) (if_statement "if ((int)uVar5 < iVar20) goto LAB_0004f550;" if (parenthesized_expression "((int)uVar5 < iVar20)" ( (binary_expression "(int)uVar5 < iVar20" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "*(int *)(puVar24 + 0x10) = iVar20;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar20" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,param_4,uVar5,piVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar20 = iVar20 + uVar5;" (assignment_expression "iVar20 = iVar20 + uVar5" identifier = (binary_expression "iVar20 + uVar5" identifier + identifier)) ;) (if_statement "if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }" { (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" ( (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" ( (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" ( (comma_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar10,param_1,param_7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((int)param_7 < iVar20)" ( (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ))) )) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" { (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" identifier = (binary_expression "piVar10 + param_7" identifier + identifier)) ;) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar18 + 1;" (assignment_expression "*piVar13 = iVar18 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" if (parenthesized_expression "((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20))" ( (binary_expression "(iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 + 1 == 0)" ( (binary_expression "iVar18 + 1 == 0" (binary_expression "iVar18 + 1" identifier + number_literal) == number_literal) )) && (parenthesized_expression "((int)(param_7 + 1) < iVar20)" ( (binary_expression "(int)(param_7 + 1) < iVar20" (cast_expression "(int)(param_7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 + 1)" ( (binary_expression "param_7 + 1" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" { (expression_statement "iVar17 = piVar10[param_7 + 1] + 1;" (assignment_expression "iVar17 = piVar10[param_7 + 1] + 1" identifier = (binary_expression "piVar10[param_7 + 1] + 1" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) + number_literal)) ;) (expression_statement "piVar10[param_7 + 1] = iVar17;" (assignment_expression "piVar10[param_7 + 1] = iVar17" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) = identifier) ;) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" for ( (assignment_expression "iVar18 = param_7 + 2" identifier = (binary_expression "param_7 + 2" identifier + number_literal)) ; (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" ( (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" identifier == number_literal) && (parenthesized_expression "(iVar20 != iVar18)" ( (binary_expression "iVar20 != iVar18" identifier != identifier) ))) )) ; (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ) (compound_statement "{\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" { (expression_statement "iVar17 = piVar13[2] + 1;" (assignment_expression "iVar17 = piVar13[2] + 1" identifier = (binary_expression "piVar13[2] + 1" (subscript_expression "piVar13[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar13[2] = iVar17;" (assignment_expression "piVar13[2] = iVar17" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);" (assignment_expression "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" identifier = (binary_expression "iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" identifier - (call_expression "(uint)(piVar10[iVar20 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar10[iVar20 + -1] == 0)" ( (binary_expression "piVar10[iVar20 + -1] == 0" (subscript_expression "piVar10[iVar20 + -1]" identifier [ (binary_expression "iVar20 + -1" identifier + number_literal) ]) == number_literal) ))))) ;) (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" statement_identifier : (if_statement "if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" if (parenthesized_expression "(0 < (int)uVar16)" ( (binary_expression "0 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" { (expression_statement "iVar17 = piVar8[-1];" (assignment_expression "iVar17 = piVar8[-1]" identifier = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (while_statement "while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" while (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" { (expression_statement "uVar16 = uVar16 - 1;" (assignment_expression "uVar16 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if (uVar16 == 0) break;" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar17 = piVar8[-2];" (assignment_expression "iVar17 = piVar8[-2]" identifier = (subscript_expression "piVar8[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) })) }))) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);" (call_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)" ( (pointer_expression "*(code *)PTR___gmpn_divexact_0009d4b4" * (cast_expression "(code *)PTR___gmpn_divexact_0009d4b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar7,piVar10,iVar20,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);" (assignment_expression "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" identifier = (binary_expression "(iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(iVar18 - uVar16)" ( (binary_expression "iVar18 - uVar16" identifier - identifier) )) - (call_expression "(uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar7[(iVar18 - uVar16) + -1] == 0)" ( (binary_expression "piVar7[(iVar18 - uVar16) + -1] == 0" (subscript_expression "piVar7[(iVar18 - uVar16) + -1]" identifier [ (binary_expression "(iVar18 - uVar16) + -1" (parenthesized_expression "(iVar18 - uVar16)" ( (binary_expression "iVar18 - uVar16" identifier - identifier) )) + number_literal) ]) == number_literal) ))))) ;) }) (else_clause "else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" else (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" { (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" ( (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" ( (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" ( (comma_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_0009d514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_0009d514" * (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar10,param_1,param_7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((int)param_7 < iVar20)" ( (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ))) )) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" { (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" identifier = (binary_expression "piVar10 + param_7" identifier + identifier)) ;) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar18 + -1;" (assignment_expression "*piVar13 = iVar18 + -1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" if (parenthesized_expression "((iVar18 == 0) && ((int)(param_7 + 1) < iVar20))" ( (binary_expression "(iVar18 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)(param_7 + 1) < iVar20)" ( (binary_expression "(int)(param_7 + 1) < iVar20" (cast_expression "(int)(param_7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 + 1)" ( (binary_expression "param_7 + 1" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" { (expression_statement "iVar17 = piVar10[param_7 + 1];" (assignment_expression "iVar17 = piVar10[param_7 + 1]" identifier = (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ])) ;) (expression_statement "piVar10[param_7 + 1] = iVar17 + -1;" (assignment_expression "piVar10[param_7 + 1] = iVar17 + -1" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" for ( (assignment_expression "iVar18 = param_7 + 2" identifier = (binary_expression "param_7 + 2" identifier + number_literal)) ; (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" ( (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" identifier == number_literal) && (parenthesized_expression "(iVar20 != iVar18)" ( (binary_expression "iVar20 != iVar18" identifier != identifier) ))) )) ; (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ) (compound_statement "{\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" { (expression_statement "iVar17 = piVar13[2];" (assignment_expression "iVar17 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "piVar13[2] = iVar17 + -1;" (assignment_expression "piVar13[2] = iVar17 + -1" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) })) })) })) (if_statement "if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" { (if_statement "if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;" if (parenthesized_expression "(piVar10[iVar20 + -1] != 0)" ( (binary_expression "piVar10[iVar20 + -1] != 0" (subscript_expression "piVar10[iVar20 + -1]" identifier [ (binary_expression "iVar20 + -1" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_0004f720;" goto statement_identifier ;)) (expression_statement "piVar13 = piVar10 + iVar20;" (assignment_expression "piVar13 = piVar10 + iVar20" identifier = (binary_expression "piVar10 + iVar20" identifier + identifier)) ;) (do_statement "do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);" do (compound_statement "{\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            }" { (expression_statement "iVar18 = iVar20;" (assignment_expression "iVar18 = iVar20" identifier = identifier) ;) (expression_statement "iVar20 = iVar18 + -1;" (assignment_expression "iVar20 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f5f0;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar13 + -2;" (assignment_expression "piVar12 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" { (labeled_statement "LAB_0004f720:\n            iVar18 = iVar20 + 1;" statement_identifier : (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f5f0:\n        bVar2 = local_68 < 1;" statement_identifier : (expression_statement "bVar2 = local_68 < 1;" (assignment_expression "bVar2 = local_68 < 1" identifier = (binary_expression "local_68 < 1" identifier < number_literal)) ;)) (if_statement "if (bVar2) {\n          local_68 = -local_68;\n        }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n          local_68 = -local_68;\n        }" { (expression_statement "local_68 = -local_68;" (assignment_expression "local_68 = -local_68" identifier = (unary_expression "-local_68" - identifier)) ;) })) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" identifier = identifier) ;) (expression_statement "uVar16 = (uint)bVar2;" (assignment_expression "uVar16 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" if (parenthesized_expression "((0 < iVar22) && (piVar23[iVar22 + -1] == 0))" ( (binary_expression "(0 < iVar22) && (piVar23[iVar22 + -1] == 0)" (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) && (parenthesized_expression "(piVar23[iVar22 + -1] == 0)" ( (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" { (expression_statement "piVar13 = piVar23 + iVar22;" (assignment_expression "piVar13 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (do_statement "do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);" do (compound_statement "{\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) break;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar8 = piVar13 + -2;" (assignment_expression "piVar8 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) ;) })) (if_statement "if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" if (parenthesized_expression "(iVar22 < local_68)" ( (binary_expression "iVar22 < local_68" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar9,iVar20,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" else (compound_statement "{\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_68;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_68" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar23,iVar22,piVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);" (assignment_expression "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" identifier = (binary_expression "(iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(iVar22 + local_68)" ( (binary_expression "iVar22 + local_68" identifier + identifier) )) - (call_expression "(uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[iVar22 + local_68 + -1] == 0)" ( (binary_expression "param_2[iVar22 + local_68 + -1] == 0" (subscript_expression "param_2[iVar22 + local_68 + -1]" identifier [ (binary_expression "iVar22 + local_68 + -1" (binary_expression "iVar22 + local_68" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar18 < 1) goto LAB_0004f6f8;" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0004f6f8;" goto statement_identifier ;)) (if_statement "if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" if (parenthesized_expression "(iVar6 < iVar18)" ( (binary_expression "iVar6 < iVar18" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar6;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar6" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar7,iVar18,piVar14)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" else (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar14,iVar6,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);" (assignment_expression "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" identifier = (binary_expression "(iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(iVar18 + iVar6)" ( (binary_expression "iVar18 + iVar6" identifier + identifier) )) - (call_expression "(uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar23[iVar18 + iVar6 + -1] == 0)" ( (binary_expression "piVar23[iVar18 + iVar6 + -1] == 0" (subscript_expression "piVar23[iVar18 + iVar6 + -1]" identifier [ (binary_expression "iVar18 + iVar6 + -1" (binary_expression "iVar18 + iVar6" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" if (parenthesized_expression "(iVar22 < iVar18)" ( (binary_expression "iVar22 < iVar18" identifier < identifier) )) (compound_statement "{\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }" { (if_statement "if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" { (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar23,param_2,iVar22)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" { (if_statement "if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(param_2 == piVar23)" ( (binary_expression "param_2 == piVar23" identifier == identifier) )) (compound_statement "{\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" { (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar18,iVar18 * 4)" identifier (argument_list "(iVar18,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" identifier = (binary_expression "iVar22 < iVar18" identifier < identifier)) ;) (goto_statement "goto LAB_0004fa3c;" goto statement_identifier ;) })) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (expression_statement "piVar14 = param_2 + iVar22;" (assignment_expression "piVar14 = param_2 + iVar22" identifier = (binary_expression "param_2 + iVar22" identifier + identifier)) ;) (while_statement "while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" { (expression_statement "iVar20 = iVar22;" (assignment_expression "iVar20 = iVar22" identifier = identifier) ;) (expression_statement "iVar6 = *piVar9;" (assignment_expression "iVar6 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar22 = iVar20 + 1;" (assignment_expression "iVar22 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar6 + 1;" (assignment_expression "*piVar14 = iVar6 + 1" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 != 0) break;" if (parenthesized_expression "(iVar6 + 1 != 0)" ( (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (if_statement "if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar18 == iVar22)" ( (binary_expression "iVar18 == iVar22" identifier == identifier) )) (compound_statement "{\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar20 + 2,iVar18 * 4)" identifier (argument_list "(iVar20 + 2,iVar18 * 4)" ( (binary_expression "iVar20 + 2" identifier + number_literal) , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) })) })) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" identifier = (binary_expression "iVar22 < iVar18" identifier < identifier)) ;) (if_statement "if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" if (parenthesized_expression "((param_2 != piVar23) && (bVar2))" ( (binary_expression "(param_2 != piVar23) && (bVar2)" (parenthesized_expression "(param_2 != piVar23)" ( (binary_expression "param_2 != piVar23" identifier != identifier) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" { (labeled_statement "LAB_0004fa3c:\n            iVar6 = 4;" statement_identifier : (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" identifier = number_literal) ;)) (if_statement "if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" { (expression_statement "iVar6 = (iVar18 - iVar22) * 4;" (assignment_expression "iVar6 = (iVar18 - iVar22) * 4" identifier = (binary_expression "(iVar18 - iVar22) * 4" (parenthesized_expression "(iVar18 - iVar22)" ( (binary_expression "iVar18 - iVar22" identifier - identifier) )) * number_literal)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);" (call_expression "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6)" (parenthesized_expression "(*(code *)PTR_memcpy_0009d544)" ( (pointer_expression "*(code *)PTR_memcpy_0009d544" * (cast_expression "(code *)PTR_memcpy_0009d544" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + iVar22,piVar23 + iVar22,iVar6)" ( (binary_expression "param_2 + iVar22" identifier + identifier) , (binary_expression "piVar23 + iVar22" identifier + identifier) , identifier ))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar18,iVar18 * 4)" identifier (argument_list "(iVar18,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = iVar18;" (assignment_expression "iVar22 = iVar18" identifier = identifier) ;) }) (else_clause "else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" else (compound_statement "{\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" { (if_statement "if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" { (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2,piVar23,iVar18)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) goto LAB_0004f6e8;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f6e8;" goto statement_identifier ;)) (expression_statement "iVar6 = iVar18 + 1;" (assignment_expression "iVar6 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar25 = CONCAT44(iVar6,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar6,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar6,iVar18 * 4)" identifier (argument_list "(iVar6,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (expression_statement "piVar14 = param_2 + iVar18;" (assignment_expression "piVar14 = param_2 + iVar18" identifier = (binary_expression "param_2 + iVar18" identifier + identifier)) ;) (if_statement "if (iVar22 == iVar18) goto LAB_0004fc80;" if (parenthesized_expression "(iVar22 == iVar18)" ( (binary_expression "iVar22 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_0004fc80;" goto statement_identifier ;)) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "*piVar14 = iVar20 + 1;" (assignment_expression "*piVar14 = iVar20 + 1" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (if_statement "if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" if (parenthesized_expression "(iVar20 + 1 == 0)" ( (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" { (if_statement "if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar22 <= iVar6)" ( (binary_expression "iVar22 <= iVar6" identifier <= identifier) )) (compound_statement "{\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" { (labeled_statement "LAB_0004f9ec:\n                iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (expression_statement "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4)" identifier = (call_expression "CONCAT44(iVar22 + 1,iVar22 * 4)" identifier (argument_list "(iVar22 + 1,iVar22 * 4)" ( (binary_expression "iVar22 + 1" identifier + number_literal) , (binary_expression "iVar22 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar18 = iVar18 + 2;" (assignment_expression "iVar18 = iVar18 + 2" identifier = (binary_expression "iVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar20 = param_2[iVar6] + 1;" (assignment_expression "iVar20 = param_2[iVar6] + 1" identifier = (binary_expression "param_2[iVar6] + 1" (subscript_expression "param_2[iVar6]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "param_2[iVar6] = iVar20;" (assignment_expression "param_2[iVar6] = iVar20" (subscript_expression "param_2[iVar6]" identifier [ identifier ]) = identifier) ;) (if_statement "if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" { (do_statement "do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);" do (compound_statement "{\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                }" { (if_statement "if (iVar22 == iVar18) goto LAB_0004f9ec;" if (parenthesized_expression "(iVar22 == iVar18)" ( (binary_expression "iVar22 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_0004f9ec;" goto statement_identifier ;)) (expression_statement "iVar20 = piVar14[2];" (assignment_expression "iVar20 = piVar14[2]" identifier = (subscript_expression "piVar14[2]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar14[2] = iVar20 + 1;" (assignment_expression "piVar14[2] = iVar20 + 1" (subscript_expression "piVar14[2]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 + 1 == 0)" ( (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" identifier + number_literal) == number_literal) )) ;) (goto_statement "goto LAB_0004f6e8;" goto statement_identifier ;) })) })) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);" statement_identifier : (expression_statement "uVar25 = CONCAT44(iVar22,iVar22 << 2);" (assignment_expression "uVar25 = CONCAT44(iVar22,iVar22 << 2)" identifier = (call_expression "CONCAT44(iVar22,iVar22 << 2)" identifier (argument_list "(iVar22,iVar22 << 2)" ( identifier , (binary_expression "iVar22 << 2" identifier << number_literal) )))) ;)) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (labeled_statement "LAB_0004f480:\n      iVar22 = iVar6 + -1;" statement_identifier : (expression_statement "iVar22 = iVar6 + -1;" (assignment_expression "iVar22 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;)) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" { (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar20;" (assignment_expression "*piVar9 = iVar20" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar6 + -1;" (assignment_expression "local_8c = param_2 + iVar6 + -1" identifier = (binary_expression "param_2 + iVar6 + -1" (binary_expression "param_2 + iVar6" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar18 = -iVar6;" (assignment_expression "iVar18 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) (expression_statement "*local_8c = iVar20;" (assignment_expression "*local_8c = iVar20" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (labeled_statement "LAB_0004f338:\n    *param_3 = iVar18;" statement_identifier : (expression_statement "*param_3 = iVar18;" (assignment_expression "*param_3 = iVar18" (pointer_expression "*param_3" * identifier) = identifier) ;)) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) }))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0004f4dc;" goto statement_identifier ;) })))
(translation_unit "mp_size_t __gmpn_gcdext(mp_ptr gp,mp_ptr up,mp_size_t *usizep,mp_ptr ap,mp_size_t an,mp_ptr bp,\n                       mp_size_t n)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  mp_size_t hgcd_scratch;\n  uint uVar3;\n  int iVar4;\n  mp_limb_t *pmVar5;\n  mp_limb_t *pmVar6;\n  mp_ptr pmVar7;\n  mp_limb_t *pmVar8;\n  mp_size_t mVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t *pmVar11;\n  mp_limb_t *pmVar12;\n  mp_limb_t *pmVar13;\n  mp_limb_t *pmVar14;\n  int iVar15;\n  mp_limb_t *pmVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  mp_limb_t mVar20;\n  mp_limb_t mVar21;\n  mp_size_t gn;\n  int iVar22;\n  mp_limb_t *pmVar23;\n  mp_size_t p1;\n  int unaff_s4;\n  int iVar24;\n  undefined1 *puVar25;\n  undefined8 uVar26;\n  undefined1 auStack_c8 [32];\n  mp_ptr local_90;\n  mp_limb_t *local_8c;\n  tmp_reentrant_t *__tmp_marker;\n  mp_size_t lehmer_un;\n  gcdext_ctx ctx;\n  hgcd_matrix M;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  puVar25 = auStack_c8;\n  uVar17 = n * 4 + 3;\n  uVar3 = (an - n) + 1;\n  if ((int)uVar17 <= (int)uVar3) {\n    uVar17 = uVar3;\n  }\n  iVar22 = n + 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar15 = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar3 = uVar17 << 2;\n  iVar19 = n >> 1;\n  if (599 < n) {\n    iVar4 = n / 3;\n    iVar24 = iVar4;\n    if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }\n    iVar18 = iVar19;\n    if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }\n    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar18 = n + iVar18 + -1;\n    if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }\n    uVar3 = 0x106b;\n    if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }\n    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;\n    uVar17 = iVar4 + unaff_s4;\n    if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }\n    uVar17 = iVar22 * 2 + uVar17;\n    uVar3 = uVar17 * 4;\n  }\n  if (uVar3 < 0x7f01) {\n    iVar4 = -(uVar3 + 7 & 0xfffffff8);\n    puVar25 = auStack_c8 + iVar4;\n    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);\n  }\n  else {\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  local_90 = gp;\n  local_8c = up;\n  if (n < an) {\n    *(mp_size_t *)(puVar25 + 0x18) = n;\n    *(mp_ptr *)(puVar25 + 0x14) = bp;\n    *(mp_size_t *)(puVar25 + 0x10) = an;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);\n    pmVar7 = ap + n;\n    mVar9 = n;\n    do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);\n    if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }\n    *usizep = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < n) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar13;\n  *(mp_size_t *)(puVar25 + 0x14) = n;\nLAB_0004f4dc:\n  *(mp_ptr *)(puVar25 + 0x10) = bp;\n  n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }\n  return n;\nLAB_0004efd4:\n  mVar21 = pmVar14[-1];\n  while (mVar21 == 0) {\n    iVar22 = iVar22 + -1;\n    mVar21 = pmVar14[-2];\n    pmVar14 = pmVar14 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar19 = iVar22 + -1;\n    mVar21 = *pmVar23;\n    pmVar13 = up;\n    if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }\n    *local_8c = mVar21;\n  }\nLAB_0004f044:\n  *usizep = iVar22;\n  n = uVar17;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*pmVar13 != 0) || (iVar22 != 1)) {\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n  *(uint *)(puVar25 + 0x14) = uVar17;\n  goto LAB_0004f4dc;\n}\n\n" (function_definition "mp_size_t __gmpn_gcdext(mp_ptr gp,mp_ptr up,mp_size_t *usizep,mp_ptr ap,mp_size_t an,mp_ptr bp,\n                       mp_size_t n)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  mp_size_t hgcd_scratch;\n  uint uVar3;\n  int iVar4;\n  mp_limb_t *pmVar5;\n  mp_limb_t *pmVar6;\n  mp_ptr pmVar7;\n  mp_limb_t *pmVar8;\n  mp_size_t mVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t *pmVar11;\n  mp_limb_t *pmVar12;\n  mp_limb_t *pmVar13;\n  mp_limb_t *pmVar14;\n  int iVar15;\n  mp_limb_t *pmVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  mp_limb_t mVar20;\n  mp_limb_t mVar21;\n  mp_size_t gn;\n  int iVar22;\n  mp_limb_t *pmVar23;\n  mp_size_t p1;\n  int unaff_s4;\n  int iVar24;\n  undefined1 *puVar25;\n  undefined8 uVar26;\n  undefined1 auStack_c8 [32];\n  mp_ptr local_90;\n  mp_limb_t *local_8c;\n  tmp_reentrant_t *__tmp_marker;\n  mp_size_t lehmer_un;\n  gcdext_ctx ctx;\n  hgcd_matrix M;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  puVar25 = auStack_c8;\n  uVar17 = n * 4 + 3;\n  uVar3 = (an - n) + 1;\n  if ((int)uVar17 <= (int)uVar3) {\n    uVar17 = uVar3;\n  }\n  iVar22 = n + 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar15 = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar3 = uVar17 << 2;\n  iVar19 = n >> 1;\n  if (599 < n) {\n    iVar4 = n / 3;\n    iVar24 = iVar4;\n    if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }\n    iVar18 = iVar19;\n    if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }\n    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar18 = n + iVar18 + -1;\n    if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }\n    uVar3 = 0x106b;\n    if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }\n    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;\n    uVar17 = iVar4 + unaff_s4;\n    if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }\n    uVar17 = iVar22 * 2 + uVar17;\n    uVar3 = uVar17 * 4;\n  }\n  if (uVar3 < 0x7f01) {\n    iVar4 = -(uVar3 + 7 & 0xfffffff8);\n    puVar25 = auStack_c8 + iVar4;\n    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);\n  }\n  else {\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  local_90 = gp;\n  local_8c = up;\n  if (n < an) {\n    *(mp_size_t *)(puVar25 + 0x18) = n;\n    *(mp_ptr *)(puVar25 + 0x14) = bp;\n    *(mp_size_t *)(puVar25 + 0x10) = an;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);\n    pmVar7 = ap + n;\n    mVar9 = n;\n    do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);\n    if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }\n    *usizep = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < n) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar13;\n  *(mp_size_t *)(puVar25 + 0x14) = n;\nLAB_0004f4dc:\n  *(mp_ptr *)(puVar25 + 0x10) = bp;\n  n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }\n  return n;\nLAB_0004efd4:\n  mVar21 = pmVar14[-1];\n  while (mVar21 == 0) {\n    iVar22 = iVar22 + -1;\n    mVar21 = pmVar14[-2];\n    pmVar14 = pmVar14 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar19 = iVar22 + -1;\n    mVar21 = *pmVar23;\n    pmVar13 = up;\n    if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }\n    *local_8c = mVar21;\n  }\nLAB_0004f044:\n  *usizep = iVar22;\n  n = uVar17;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*pmVar13 != 0) || (iVar22 != 1)) {\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n  *(uint *)(puVar25 + 0x14) = uVar17;\n  goto LAB_0004f4dc;\n}" type_identifier (function_declarator "__gmpn_gcdext(mp_ptr gp,mp_ptr up,mp_size_t *usizep,mp_ptr ap,mp_size_t an,mp_ptr bp,\n                       mp_size_t n)" identifier (parameter_list "(mp_ptr gp,mp_ptr up,mp_size_t *usizep,mp_ptr ap,mp_size_t an,mp_ptr bp,\n                       mp_size_t n)" ( (parameter_declaration "mp_ptr gp" type_identifier identifier) , (parameter_declaration "mp_ptr up" type_identifier identifier) , (parameter_declaration "mp_size_t *usizep" type_identifier (pointer_declarator "*usizep" * identifier)) , (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_size_t an" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  mp_size_t hgcd_scratch;\n  uint uVar3;\n  int iVar4;\n  mp_limb_t *pmVar5;\n  mp_limb_t *pmVar6;\n  mp_ptr pmVar7;\n  mp_limb_t *pmVar8;\n  mp_size_t mVar9;\n  mp_limb_t *pmVar10;\n  mp_limb_t *pmVar11;\n  mp_limb_t *pmVar12;\n  mp_limb_t *pmVar13;\n  mp_limb_t *pmVar14;\n  int iVar15;\n  mp_limb_t *pmVar16;\n  uint uVar17;\n  int iVar18;\n  int iVar19;\n  mp_limb_t mVar20;\n  mp_limb_t mVar21;\n  mp_size_t gn;\n  int iVar22;\n  mp_limb_t *pmVar23;\n  mp_size_t p1;\n  int unaff_s4;\n  int iVar24;\n  undefined1 *puVar25;\n  undefined8 uVar26;\n  undefined1 auStack_c8 [32];\n  mp_ptr local_90;\n  mp_limb_t *local_8c;\n  tmp_reentrant_t *__tmp_marker;\n  mp_size_t lehmer_un;\n  gcdext_ctx ctx;\n  hgcd_matrix M;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  puVar25 = auStack_c8;\n  uVar17 = n * 4 + 3;\n  uVar3 = (an - n) + 1;\n  if ((int)uVar17 <= (int)uVar3) {\n    uVar17 = uVar3;\n  }\n  iVar22 = n + 1;\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  iVar15 = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar3 = uVar17 << 2;\n  iVar19 = n >> 1;\n  if (599 < n) {\n    iVar4 = n / 3;\n    iVar24 = iVar4;\n    if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }\n    iVar18 = iVar19;\n    if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }\n    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar18 = n + iVar18 + -1;\n    if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }\n    uVar3 = 0x106b;\n    if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }\n    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;\n    uVar17 = iVar4 + unaff_s4;\n    if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }\n    uVar17 = iVar22 * 2 + uVar17;\n    uVar3 = uVar17 * 4;\n  }\n  if (uVar3 < 0x7f01) {\n    iVar4 = -(uVar3 + 7 & 0xfffffff8);\n    puVar25 = auStack_c8 + iVar4;\n    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);\n  }\n  else {\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  local_90 = gp;\n  local_8c = up;\n  if (n < an) {\n    *(mp_size_t *)(puVar25 + 0x18) = n;\n    *(mp_ptr *)(puVar25 + 0x14) = bp;\n    *(mp_size_t *)(puVar25 + 0x10) = an;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);\n    pmVar7 = ap + n;\n    mVar9 = n;\n    do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);\n    if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }\n    *usizep = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < n) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar13;\n  *(mp_size_t *)(puVar25 + 0x14) = n;\nLAB_0004f4dc:\n  *(mp_ptr *)(puVar25 + 0x10) = bp;\n  n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }\n  return n;\nLAB_0004efd4:\n  mVar21 = pmVar14[-1];\n  while (mVar21 == 0) {\n    iVar22 = iVar22 + -1;\n    mVar21 = pmVar14[-2];\n    pmVar14 = pmVar14 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar19 = iVar22 + -1;\n    mVar21 = *pmVar23;\n    pmVar13 = up;\n    if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }\n    *local_8c = mVar21;\n  }\nLAB_0004f044:\n  *usizep = iVar22;\n  n = uVar17;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*pmVar13 != 0) || (iVar22 != 1)) {\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }\n  *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n  *(uint *)(puVar25 + 0x14) = uVar17;\n  goto LAB_0004f4dc;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "mp_size_t hgcd_scratch;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "mp_limb_t *pmVar6;" type_identifier (pointer_declarator "*pmVar6" * identifier) ;) (declaration "mp_ptr pmVar7;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar8;" type_identifier (pointer_declarator "*pmVar8" * identifier) ;) (declaration "mp_size_t mVar9;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar10;" type_identifier (pointer_declarator "*pmVar10" * identifier) ;) (declaration "mp_limb_t *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "mp_limb_t *pmVar12;" type_identifier (pointer_declarator "*pmVar12" * identifier) ;) (declaration "mp_limb_t *pmVar13;" type_identifier (pointer_declarator "*pmVar13" * identifier) ;) (declaration "mp_limb_t *pmVar14;" type_identifier (pointer_declarator "*pmVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar16;" type_identifier (pointer_declarator "*pmVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "mp_limb_t mVar20;" type_identifier identifier ;) (declaration "mp_limb_t mVar21;" type_identifier identifier ;) (declaration "mp_size_t gn;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar23;" type_identifier (pointer_declarator "*pmVar23" * identifier) ;) (declaration "mp_size_t p1;" type_identifier identifier ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined8 uVar26;" type_identifier identifier ;) (declaration "undefined1 auStack_c8 [32];" type_identifier (array_declarator "auStack_c8 [32]" identifier [ number_literal ]) ;) (declaration "mp_ptr local_90;" type_identifier identifier ;) (declaration "mp_limb_t *local_8c;" type_identifier (pointer_declarator "*local_8c" * identifier) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mp_size_t lehmer_un;" type_identifier identifier ;) (declaration "gcdext_ctx ctx;" type_identifier identifier ;) (declaration "hgcd_matrix M;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar25 = auStack_c8;" (assignment_expression "puVar25 = auStack_c8" identifier = identifier) ;) (expression_statement "uVar17 = n * 4 + 3;" (assignment_expression "uVar17 = n * 4 + 3" identifier = (binary_expression "n * 4 + 3" (binary_expression "n * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "uVar3 = (an - n) + 1;" (assignment_expression "uVar3 = (an - n) + 1" identifier = (binary_expression "(an - n) + 1" (parenthesized_expression "(an - n)" ( (binary_expression "an - n" identifier - identifier) )) + number_literal)) ;) (if_statement "if ((int)uVar17 <= (int)uVar3) {\n    uVar17 = uVar3;\n  }" if (parenthesized_expression "((int)uVar17 <= (int)uVar3)" ( (binary_expression "(int)uVar17 <= (int)uVar3" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar17 = uVar3;\n  }" { (expression_statement "uVar17 = uVar3;" (assignment_expression "uVar17 = uVar3" identifier = identifier) ;) })) (expression_statement "iVar22 = n + 1;" (assignment_expression "iVar22 = n + 1" identifier = (binary_expression "n + 1" identifier + number_literal)) ;) (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 "iVar15 = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "iVar15 = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar3 = uVar17 << 2;" (assignment_expression "uVar3 = uVar17 << 2" identifier = (binary_expression "uVar17 << 2" identifier << number_literal)) ;) (expression_statement "iVar19 = n >> 1;" (assignment_expression "iVar19 = n >> 1" identifier = (binary_expression "n >> 1" identifier >> number_literal)) ;) (if_statement "if (599 < n) {\n    iVar4 = n / 3;\n    iVar24 = iVar4;\n    if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }\n    iVar18 = iVar19;\n    if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }\n    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar18 = n + iVar18 + -1;\n    if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }\n    uVar3 = 0x106b;\n    if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }\n    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;\n    uVar17 = iVar4 + unaff_s4;\n    if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }\n    uVar17 = iVar22 * 2 + uVar17;\n    uVar3 = uVar17 * 4;\n  }" if (parenthesized_expression "(599 < n)" ( (binary_expression "599 < n" number_literal < identifier) )) (compound_statement "{\n    iVar4 = n / 3;\n    iVar24 = iVar4;\n    if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }\n    iVar18 = iVar19;\n    if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }\n    iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar18 = n + iVar18 + -1;\n    if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }\n    uVar3 = 0x106b;\n    if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }\n    unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;\n    uVar17 = iVar4 + unaff_s4;\n    if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }\n    uVar17 = iVar22 * 2 + uVar17;\n    uVar3 = uVar17 * 4;\n  }" { (expression_statement "iVar4 = n / 3;" (assignment_expression "iVar4 = n / 3" identifier = (binary_expression "n / 3" identifier / number_literal)) ;) (expression_statement "iVar24 = iVar4;" (assignment_expression "iVar24 = iVar4" identifier = identifier) ;) (if_statement "if (iVar19 <= iVar4) {\n      iVar24 = iVar19;\n    }" if (parenthesized_expression "(iVar19 <= iVar4)" ( (binary_expression "iVar19 <= iVar4" identifier <= identifier) )) (compound_statement "{\n      iVar24 = iVar19;\n    }" { (expression_statement "iVar24 = iVar19;" (assignment_expression "iVar24 = iVar19" identifier = identifier) ;) })) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" identifier = identifier) ;) (if_statement "if (iVar19 < iVar4) {\n      iVar18 = iVar4;\n    }" if (parenthesized_expression "(iVar19 < iVar4)" ( (binary_expression "iVar19 < iVar4" identifier < identifier) )) (compound_statement "{\n      iVar18 = iVar4;\n    }" { (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) })) (expression_statement "iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)()" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)()" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "iVar18 = n + iVar18 + -1;" (assignment_expression "iVar18 = n + iVar18 + -1" identifier = (binary_expression "n + iVar18 + -1" (binary_expression "n + iVar18" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar4 <= iVar18) {\n      iVar4 = iVar18;\n    }" if (parenthesized_expression "(iVar4 <= iVar18)" ( (binary_expression "iVar4 <= iVar18" identifier <= identifier) )) (compound_statement "{\n      iVar4 = iVar18;\n    }" { (expression_statement "iVar4 = iVar18;" (assignment_expression "iVar4 = iVar18" identifier = identifier) ;) })) (expression_statement "uVar3 = 0x106b;" (assignment_expression "uVar3 = 0x106b" identifier = number_literal) ;) (if_statement "if (0x106a < (int)uVar17) {\n      uVar3 = uVar17;\n    }" if (parenthesized_expression "(0x106a < (int)uVar17)" ( (binary_expression "0x106a < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar3 = uVar17;\n    }" { (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) })) (expression_statement "unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4;" (assignment_expression "unaff_s4 = (((n - iVar24) + 1) / 2 + 1) * 4" identifier = (binary_expression "(((n - iVar24) + 1) / 2 + 1) * 4" (parenthesized_expression "(((n - iVar24) + 1) / 2 + 1)" ( (binary_expression "((n - iVar24) + 1) / 2 + 1" (binary_expression "((n - iVar24) + 1) / 2" (parenthesized_expression "((n - iVar24) + 1)" ( (binary_expression "(n - iVar24) + 1" (parenthesized_expression "(n - iVar24)" ( (binary_expression "n - iVar24" identifier - identifier) )) + number_literal) )) / number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar17 = iVar4 + unaff_s4;" (assignment_expression "uVar17 = iVar4 + unaff_s4" identifier = (binary_expression "iVar4 + unaff_s4" identifier + identifier)) ;) (if_statement "if (iVar4 + unaff_s4 < (int)uVar3) {\n      uVar17 = uVar3;\n    }" if (parenthesized_expression "(iVar4 + unaff_s4 < (int)uVar3)" ( (binary_expression "iVar4 + unaff_s4 < (int)uVar3" (binary_expression "iVar4 + unaff_s4" identifier + identifier) < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar17 = uVar3;\n    }" { (expression_statement "uVar17 = uVar3;" (assignment_expression "uVar17 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar17 = iVar22 * 2 + uVar17;" (assignment_expression "uVar17 = iVar22 * 2 + uVar17" identifier = (binary_expression "iVar22 * 2 + uVar17" (binary_expression "iVar22 * 2" identifier * number_literal) + identifier)) ;) (expression_statement "uVar3 = uVar17 * 4;" (assignment_expression "uVar3 = uVar17 * 4" identifier = (binary_expression "uVar17 * 4" identifier * number_literal)) ;) })) (if_statement "if (uVar3 < 0x7f01) {\n    iVar4 = -(uVar3 + 7 & 0xfffffff8);\n    puVar25 = auStack_c8 + iVar4;\n    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);\n  }\n  else {\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" if (parenthesized_expression "(uVar3 < 0x7f01)" ( (binary_expression "uVar3 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar4 = -(uVar3 + 7 & 0xfffffff8);\n    puVar25 = auStack_c8 + iVar4;\n    pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);\n  }" { (expression_statement "iVar4 = -(uVar3 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar3 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar3 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar3 + 7 & 0xfffffff8)" ( (binary_expression "uVar3 + 7 & 0xfffffff8" (binary_expression "uVar3 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar25 = auStack_c8 + iVar4;" (assignment_expression "puVar25 = auStack_c8 + iVar4" identifier = (binary_expression "auStack_c8 + iVar4" identifier + identifier)) ;) (expression_statement "pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4);" (assignment_expression "pmVar13 = (mp_limb_t *)(&stack0xffffff58 + iVar4)" identifier = (cast_expression "(mp_limb_t *)(&stack0xffffff58 + iVar4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffff58 + iVar4)" ( (binary_expression "&stack0xffffff58 + iVar4" (pointer_expression "&stack0xffffff58" & identifier) + identifier) )))) ;) }) (else_clause "else {\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" else (compound_statement "{\n    pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" { (expression_statement "pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);" (assignment_expression "pmVar13 = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" identifier = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) ))))) ;) }))) (expression_statement "local_90 = gp;" (assignment_expression "local_90 = gp" identifier = identifier) ;) (expression_statement "local_8c = up;" (assignment_expression "local_8c = up" identifier = identifier) ;) (if_statement "if (n < an) {\n    *(mp_size_t *)(puVar25 + 0x18) = n;\n    *(mp_ptr *)(puVar25 + 0x14) = bp;\n    *(mp_size_t *)(puVar25 + 0x10) = an;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);\n    pmVar7 = ap + n;\n    mVar9 = n;\n    do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);\n    if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }\n    *usizep = 0;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "(n < an)" ( (binary_expression "n < an" identifier < identifier) )) (compound_statement "{\n    *(mp_size_t *)(puVar25 + 0x18) = n;\n    *(mp_ptr *)(puVar25 + 0x14) = bp;\n    *(mp_size_t *)(puVar25 + 0x10) = an;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);\n    pmVar7 = ap + n;\n    mVar9 = n;\n    do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);\n    if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }\n    *usizep = 0;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "*(mp_size_t *)(puVar25 + 0x18) = n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x18) = n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x18)" * (cast_expression "(mp_size_t *)(puVar25 + 0x18)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar25 + 0x14) = bp;" (assignment_expression "*(mp_ptr *)(puVar25 + 0x14) = bp" (pointer_expression "*(mp_ptr *)(puVar25 + 0x14)" * (cast_expression "(mp_ptr *)(puVar25 + 0x14)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = an;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = an" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap);" (call_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(pmVar13,ap,0,ap)" (parenthesized_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)" ( (pointer_expression "*(code *)PTR___gmpn_tdiv_qr_0009d614" * (cast_expression "(code *)PTR___gmpn_tdiv_qr_0009d614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,ap,0,ap)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "pmVar7 = ap + n;" (assignment_expression "pmVar7 = ap + n" identifier = (binary_expression "ap + n" identifier + identifier)) ;) (expression_statement "mVar9 = n;" (assignment_expression "mVar9 = n" identifier = identifier) ;) (do_statement "do {\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    } while (mVar9 != 0);" do (compound_statement "{\n      mVar9 = mVar9 + -1;\n      if (pmVar7[-1] != 0) goto LAB_0004eb40;\n      pmVar7 = pmVar7 + -1;\n    }" { (expression_statement "mVar9 = mVar9 + -1;" (assignment_expression "mVar9 = mVar9 + -1" identifier = (binary_expression "mVar9 + -1" identifier + number_literal)) ;) (if_statement "if (pmVar7[-1] != 0) goto LAB_0004eb40;" if (parenthesized_expression "(pmVar7[-1] != 0)" ( (binary_expression "pmVar7[-1] != 0" (subscript_expression "pmVar7[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0004eb40;" goto statement_identifier ;)) (expression_statement "pmVar7 = pmVar7 + -1;" (assignment_expression "pmVar7 = pmVar7 + -1" identifier = (binary_expression "pmVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar9 != 0)" ( (binary_expression "mVar9 != 0" identifier != number_literal) )) ;) (if_statement "if (n != 0) {\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }" if (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = n + -1;\n      mVar21 = *bp;\n      pmVar13 = gp;\n      if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }\n      *local_90 = mVar21;\n    }" { (expression_statement "iVar22 = n + -1;" (assignment_expression "iVar22 = n + -1" identifier = (binary_expression "n + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *bp;" (assignment_expression "mVar21 = *bp" identifier = (pointer_expression "*bp" * identifier)) ;) (expression_statement "pmVar13 = gp;" (assignment_expression "pmVar13 = gp" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);\n        local_90 = gp + n + -1;\n      }" { (do_statement "do {\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          bp = bp + 1;\n          *pmVar13 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *bp;\n          pmVar13 = pmVar13 + 1;\n        }" { (expression_statement "bp = bp + 1;" (assignment_expression "bp = bp + 1" identifier = (binary_expression "bp + 1" identifier + number_literal)) ;) (expression_statement "*pmVar13 = mVar21;" (assignment_expression "*pmVar13 = mVar21" (pointer_expression "*pmVar13" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *bp;" (assignment_expression "mVar21 = *bp" identifier = (pointer_expression "*bp" * identifier)) ;) (expression_statement "pmVar13 = pmVar13 + 1;" (assignment_expression "pmVar13 = pmVar13 + 1" identifier = (binary_expression "pmVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_90 = gp + n + -1;" (assignment_expression "local_90 = gp + n + -1" identifier = (binary_expression "gp + n + -1" (binary_expression "gp + n" identifier + identifier) + number_literal)) ;) })) (expression_statement "*local_90 = mVar21;" (assignment_expression "*local_90 = mVar21" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "*usizep = 0;" (assignment_expression "*usizep = 0" (pointer_expression "*usizep" * identifier) = number_literal) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) })) (labeled_statement "LAB_0004eb40:\n  if (599 < n) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }" statement_identifier : (if_statement "if (599 < n) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }" if (parenthesized_expression "(599 < n)" ( (binary_expression "599 < n" number_literal < identifier) )) (compound_statement "{\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }\n    pmVar23 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    ctx.gp = gp;\n    ctx.up = up;\n    ctx.usize = usizep;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);\n    pmVar12 = pmVar14 + unaff_s4;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);\n    if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }\n    if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }\nLAB_0004ef08:\n    pmVar12 = ap + uVar17;\n    pmVar6 = bp + uVar17;\n    uVar3 = uVar17;\n    pmVar5 = pmVar12;\n    pmVar8 = pmVar6;\n    while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }\n    pmVar5 = pmVar13 + iVar22;\n    pmVar14 = pmVar23 + iVar22;\n    iVar19 = iVar22;\n    pmVar12 = pmVar5;\n    pmVar6 = pmVar14;\n    do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);\n    if (*pmVar6 < *pmVar8) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }\n    goto LAB_0004f044;\n  }" { (if_statement "if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);\n    }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8);" (call_expression "(*(code *)PTR_memset_0009d2e8)(pmVar13,0,iVar22 * 8)" (parenthesized_expression "(*(code *)PTR_memset_0009d2e8)" ( (pointer_expression "*(code *)PTR_memset_0009d2e8" * (cast_expression "(code *)PTR_memset_0009d2e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,0,iVar22 * 8)" ( identifier , number_literal , (binary_expression "iVar22 * 8" identifier * number_literal) ))) ;) })) (expression_statement "pmVar23 = pmVar13 + iVar22;" (assignment_expression "pmVar23 = pmVar13 + iVar22" identifier = (binary_expression "pmVar13 + iVar22" identifier + identifier)) ;) (expression_statement "pmVar14 = pmVar23 + iVar22;" (assignment_expression "pmVar14 = pmVar23 + iVar22" identifier = (binary_expression "pmVar23 + iVar22" identifier + identifier)) ;) (expression_statement "ctx.gp = gp;" (assignment_expression "ctx.gp = gp" (field_expression "ctx.gp" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.up = up;" (assignment_expression "ctx.up = up" (field_expression "ctx.up" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.usize = usizep;" (assignment_expression "ctx.usize = usizep" (field_expression "ctx.usize" identifier . field_identifier) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,n - iVar19,pmVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,n - iVar19,pmVar14)" ( (pointer_expression "&M" & identifier) , (binary_expression "n - iVar19" identifier - identifier) , identifier ))) ;) (expression_statement "pmVar12 = pmVar14 + unaff_s4;" (assignment_expression "pmVar12 = pmVar14 + unaff_s4" identifier = (binary_expression "pmVar14 + unaff_s4" identifier + identifier)) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x10) = pmVar12;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x10) = pmVar12" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x10)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x10)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)(ap + iVar19,bp + iVar19,n - iVar19,&M)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap + iVar19,bp + iVar19,n - iVar19,&M)" ( (binary_expression "ap + iVar19" identifier + identifier) , (binary_expression "bp + iVar19" identifier + identifier) , (binary_expression "n - iVar19" identifier - identifier) , (pointer_expression "&M" & identifier) )))) ;) (if_statement "if (iVar22 < 1) {\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      *pmVar23 = 1;\n      *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n      ctx.tp = pmVar14 + n;\n      *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n      ctx.un = 1;\n      ctx.u0 = pmVar13;\n      ctx.u1 = pmVar23;\n      *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);\n      iVar22 = ctx.un;\n      if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }\n    }" { (expression_statement "*pmVar23 = 1;" (assignment_expression "*pmVar23 = 1" (pointer_expression "*pmVar23" * identifier) = number_literal) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x18)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x18)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "ctx.tp = pmVar14 + n;" (assignment_expression "ctx.tp = pmVar14 + n" (field_expression "ctx.tp" identifier . field_identifier) = (binary_expression "pmVar14 + n" identifier + identifier)) ;) (expression_statement "*(gcdext_ctx **)(puVar25 + 0x14) = &ctx;" (assignment_expression "*(gcdext_ctx **)(puVar25 + 0x14) = &ctx" (pointer_expression "*(gcdext_ctx **)(puVar25 + 0x14)" * (cast_expression "(gcdext_ctx **)(puVar25 + 0x14)" ( (type_descriptor "gcdext_ctx **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = (pointer_expression "&ctx" & identifier)) ;) (expression_statement "ctx.un = 1;" (assignment_expression "ctx.un = 1" (field_expression "ctx.un" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.u0 = pmVar13;" (assignment_expression "ctx.u0 = pmVar13" (field_expression "ctx.u0" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.u1 = pmVar23;" (assignment_expression "ctx.u1 = pmVar23" (field_expression "ctx.u1" identifier . field_identifier) = identifier) ;) (expression_statement "*(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar25 + 0x10)" * (cast_expression "(undefined **)(puVar25 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0);" (assignment_expression "uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap,bp,n,0)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "iVar22 = ctx.un;" (assignment_expression "iVar22 = ctx.un" identifier = (field_expression "ctx.un" identifier . field_identifier)) ;) (if_statement "if (uVar17 == 0) {\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004f0cc:\n        n = ctx.gn;\n        if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        n = ctx.gn;\n        goto LAB_0004f0dc;\n      }" { (labeled_statement "LAB_0004f0cc:\n        n = ctx.gn;" statement_identifier : (expression_statement "n = ctx.gn;" (assignment_expression "n = ctx.gn" identifier = (field_expression "ctx.gn" identifier . field_identifier)) ;)) (if_statement "if (__tmp_marker == (tmp_reentrant_t *)0x0) goto LAB_0004f0dc;" 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)) )) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "n = ctx.gn;" (assignment_expression "n = ctx.gn" identifier = (field_expression "ctx.gn" identifier . field_identifier)) ;) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;) })) }) (else_clause "else {\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }" else (compound_statement "{\n      *(int *)(puVar25 + 0x10) = iVar19;\n      *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n      uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);\n      pmVar6 = M.p[1][1];\n      iVar22 = M.n;\n      if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }\n      if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }\n    }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar19;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar19" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x14) = pmVar12;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x14) = pmVar12" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x14)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x14)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp);" (assignment_expression "uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,iVar19 + iVar22,ap,bp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,iVar19 + iVar22,ap,bp)" ( (pointer_expression "&M" & identifier) , (binary_expression "iVar19 + iVar22" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "pmVar6 = M.p[1][1];" (assignment_expression "pmVar6 = M.p[1][1]" identifier = (subscript_expression "M.p[1][1]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "iVar22 = M.n;" (assignment_expression "iVar22 = M.n" identifier = (field_expression "M.n" identifier . field_identifier)) ;) (if_statement "if (M.n != 0) {\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }" if (parenthesized_expression "(M.n != 0)" ( (binary_expression "M.n != 0" (field_expression "M.n" identifier . field_identifier) != number_literal) )) (compound_statement "{\n        iVar4 = M.n + -1;\n        mVar21 = *M.p[1][0];\n        iVar19 = iVar4;\n        pmVar5 = pmVar13;\n        pmVar8 = M.p[1][0];\n        if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }\n      }" { (expression_statement "iVar4 = M.n + -1;" (assignment_expression "iVar4 = M.n + -1" identifier = (binary_expression "M.n + -1" (field_expression "M.n" identifier . field_identifier) + number_literal)) ;) (expression_statement "mVar21 = *M.p[1][0];" (assignment_expression "mVar21 = *M.p[1][0]" identifier = (pointer_expression "*M.p[1][0]" * (subscript_expression "M.p[1][0]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ]))) ;) (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;) (expression_statement "pmVar5 = pmVar13;" (assignment_expression "pmVar5 = pmVar13" identifier = identifier) ;) (expression_statement "pmVar8 = M.p[1][0];" (assignment_expression "pmVar8 = M.p[1][0]" identifier = (subscript_expression "M.p[1][0]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }\n        else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          *pmVar13 = mVar21;\n          *pmVar23 = *pmVar6;\n        }" { (expression_statement "*pmVar13 = mVar21;" (assignment_expression "*pmVar13 = mVar21" (pointer_expression "*pmVar13" * identifier) = identifier) ;) (expression_statement "*pmVar23 = *pmVar6;" (assignment_expression "*pmVar23 = *pmVar6" (pointer_expression "*pmVar23" * identifier) = (pointer_expression "*pmVar6" * identifier)) ;) }) (else_clause "else {\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }" else (compound_statement "{\n          do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);\n          pmVar13[iVar22 + -1] = mVar21;\n          mVar21 = *pmVar6;\n          pmVar5 = pmVar23;\n          do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);\n          pmVar23[iVar22 + -1] = mVar21;\n        }" { (do_statement "do {\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          } while (iVar19 != 0);" do (compound_statement "{\n            *pmVar5 = mVar21;\n            iVar19 = iVar19 + -1;\n            mVar21 = pmVar8[1];\n            pmVar5 = pmVar5 + 1;\n            pmVar8 = pmVar8 + 1;\n          }" { (expression_statement "*pmVar5 = mVar21;" (assignment_expression "*pmVar5 = mVar21" (pointer_expression "*pmVar5" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = pmVar8[1];" (assignment_expression "mVar21 = pmVar8[1]" identifier = (subscript_expression "pmVar8[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar5 = pmVar5 + 1;" (assignment_expression "pmVar5 = pmVar5 + 1" identifier = (binary_expression "pmVar5 + 1" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + 1;" (assignment_expression "pmVar8 = pmVar8 + 1" identifier = (binary_expression "pmVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar13[iVar22 + -1] = mVar21;" (assignment_expression "pmVar13[iVar22 + -1] = mVar21" (subscript_expression "pmVar13[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "mVar21 = *pmVar6;" (assignment_expression "mVar21 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar5 = pmVar23;" (assignment_expression "pmVar5 = pmVar23" identifier = identifier) ;) (do_statement "do {\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          } while (iVar4 != 0);" do (compound_statement "{\n            pmVar6 = pmVar6 + 1;\n            *pmVar5 = mVar21;\n            iVar4 = iVar4 + -1;\n            mVar21 = *pmVar6;\n            pmVar5 = pmVar5 + 1;\n          }" { (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar5 = mVar21;" (assignment_expression "*pmVar5 = mVar21" (pointer_expression "*pmVar5" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar6;" (assignment_expression "mVar21 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar5 = pmVar5 + 1;" (assignment_expression "pmVar5 = pmVar5 + 1" identifier = (binary_expression "pmVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar23[iVar22 + -1] = mVar21;" (assignment_expression "pmVar23[iVar22 + -1] = mVar21" (subscript_expression "pmVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) }))) })) (if_statement "if (pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0) {\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }" if (parenthesized_expression "(pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0)" ( (binary_expression "pmVar13[iVar22 + -1] == 0 && pmVar23[iVar22 + -1] == 0" (binary_expression "pmVar13[iVar22 + -1] == 0" (subscript_expression "pmVar13[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) && (binary_expression "pmVar23[iVar22 + -1] == 0" (subscript_expression "pmVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n        pmVar5 = pmVar13 + iVar22 + -2;\n        pmVar6 = pmVar23 + iVar22 + -2;\n        do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);\n      }" { (expression_statement "pmVar5 = pmVar13 + iVar22 + -2;" (assignment_expression "pmVar5 = pmVar13 + iVar22 + -2" identifier = (binary_expression "pmVar13 + iVar22 + -2" (binary_expression "pmVar13 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "pmVar6 = pmVar23 + iVar22 + -2;" (assignment_expression "pmVar6 = pmVar23 + iVar22 + -2" identifier = (binary_expression "pmVar23 + iVar22 + -2" (binary_expression "pmVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        } while (mVar21 == 0 && mVar20 == 0);" do (compound_statement "{\n          mVar21 = *pmVar5;\n          iVar22 = iVar22 + -1;\n          mVar20 = *pmVar6;\n          pmVar5 = pmVar5 + -1;\n          pmVar6 = pmVar6 + -1;\n        }" { (expression_statement "mVar21 = *pmVar5;" (assignment_expression "mVar21 = *pmVar5" identifier = (pointer_expression "*pmVar5" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar20 = *pmVar6;" (assignment_expression "mVar20 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar5 = pmVar5 + -1;" (assignment_expression "pmVar5 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) (expression_statement "pmVar6 = pmVar6 + -1;" (assignment_expression "pmVar6 = pmVar6 + -1" identifier = (binary_expression "pmVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0 && mVar20 == 0)" ( (binary_expression "mVar21 == 0 && mVar20 == 0" (binary_expression "mVar21 == 0" identifier == number_literal) && (binary_expression "mVar20 == 0" identifier == number_literal)) )) ;) })) }))) (if_statement "if (599 < (int)uVar17) {\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }" if (parenthesized_expression "(599 < (int)uVar17)" ( (binary_expression "599 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      } while (599 < (int)uVar17);" do (compound_statement "{\n        while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }\n        *(mp_limb_t **)(puVar25 + 0x18) = pmVar14;\n        *(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        ctx.un = iVar22;\n        ctx.u0 = pmVar13;\n        ctx.u1 = pmVar23;\n        ctx.tp = pmVar14 + uVar17;\n        *(gcdext_ctx **)(puVar25 + 0x14) = &ctx;\n        uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);\n        if (uVar17 == 0) goto LAB_0004f0cc;\n        iVar22 = ctx.un;\n      }" { (while_statement "while( true ) {\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar3 = uVar17 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);\n          *(mp_limb_t **)(puVar25 + 0x10) = pmVar12;\n          iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);\n          if (iVar19 < 1) break;\n          *(mp_limb_t **)(puVar25 + 0x14) = pmVar12;\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);\n          pmVar7 = M.p[0][0];\n          mVar9 = M.n;\n          if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }\n          pmVar6 = pmVar12 + iVar22;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }\n          mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);\n          pmVar7 = M.p[1][1];\n          mVar9 = M.n;\n          if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }\n          mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);\n          iVar22 = iVar22 + M.n;\n          if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar17 < 600) goto LAB_0004ef08;\n        }" { (expression_statement "uVar3 = uVar17 / 3;" (assignment_expression "uVar3 = uVar17 / 3" identifier = (binary_expression "uVar17 / 3" identifier / number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,uVar17 - uVar3,pmVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,uVar17 - uVar3,pmVar14)" ( (pointer_expression "&M" & identifier) , (binary_expression "uVar17 - uVar3" identifier - identifier) , identifier ))) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x10) = pmVar12;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x10) = pmVar12" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x10)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x10)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M);" (assignment_expression "iVar19 = (*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap + uVar3,bp + uVar3,uVar17 - uVar3,&M)" ( (binary_expression "ap + uVar3" identifier + identifier) , (binary_expression "bp + uVar3" identifier + identifier) , (binary_expression "uVar17 - uVar3" identifier - identifier) , (pointer_expression "&M" & identifier) )))) ;) (if_statement "if (iVar19 < 1) break;" if (parenthesized_expression "(iVar19 < 1)" ( (binary_expression "iVar19 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(mp_limb_t **)(puVar25 + 0x14) = pmVar12;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x14) = pmVar12" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x14)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x14)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar25 + 0x10) = uVar3;" (assignment_expression "*(uint *)(puVar25 + 0x10) = uVar3" (pointer_expression "*(uint *)(puVar25 + 0x10)" * (cast_expression "(uint *)(puVar25 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp);" (assignment_expression "uVar17 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar3 + iVar19,ap,bp)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,uVar3 + iVar19,ap,bp)" ( (pointer_expression "&M" & identifier) , (binary_expression "uVar3 + iVar19" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "pmVar7 = M.p[0][0];" (assignment_expression "pmVar7 = M.p[0][0]" identifier = (subscript_expression "M.p[0][0]" (subscript_expression "M.p[0]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "mVar9 = M.n;" (assignment_expression "mVar9 = M.n" identifier = (field_expression "M.n" identifier . field_identifier)) ;) (if_statement "if (iVar22 != 0) {\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar19 = iVar22 + -1;\n            mVar21 = *pmVar13;\n            pmVar5 = pmVar12;\n            pmVar6 = pmVar13;\n            if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }\n            *pmVar5 = mVar21;\n          }" { (expression_statement "iVar19 = iVar22 + -1;" (assignment_expression "iVar19 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;) (expression_statement "pmVar5 = pmVar12;" (assignment_expression "pmVar5 = pmVar12" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar13;" (assignment_expression "pmVar6 = pmVar13" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);\n              pmVar5 = pmVar12 + iVar22 + 0x3fffffff;\n            }" { (do_statement "do {\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              } while (iVar19 != 0);" do (compound_statement "{\n                *pmVar5 = mVar21;\n                iVar19 = iVar19 + -1;\n                mVar21 = pmVar6[1];\n                pmVar5 = pmVar5 + 1;\n                pmVar6 = pmVar6 + 1;\n              }" { (expression_statement "*pmVar5 = mVar21;" (assignment_expression "*pmVar5 = mVar21" (pointer_expression "*pmVar5" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = pmVar6[1];" (assignment_expression "mVar21 = pmVar6[1]" identifier = (subscript_expression "pmVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar5 = pmVar5 + 1;" (assignment_expression "pmVar5 = pmVar5 + 1" identifier = (binary_expression "pmVar5 + 1" identifier + number_literal)) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar5 = pmVar12 + iVar22 + 0x3fffffff;" (assignment_expression "pmVar5 = pmVar12 + iVar22 + 0x3fffffff" identifier = (binary_expression "pmVar12 + iVar22 + 0x3fffffff" (binary_expression "pmVar12 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*pmVar5 = mVar21;" (assignment_expression "*pmVar5 = mVar21" (pointer_expression "*pmVar5" * identifier) = identifier) ;) })) (expression_statement "pmVar6 = pmVar12 + iVar22;" (assignment_expression "pmVar6 = pmVar12 + iVar22" identifier = (binary_expression "pmVar12 + iVar22" identifier + identifier)) ;) (if_statement "if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }" if (parenthesized_expression "(M.n < iVar22)" ( (binary_expression "M.n < iVar22" (field_expression "M.n" identifier . field_identifier) < identifier) )) (compound_statement "{\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);\n            pmVar7 = M.p[1][0];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);\n          }" { (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = M.n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = M.n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar12,iVar22,pmVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar6,pmVar12,iVar22,pmVar7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pmVar7 = M.p[1][0];" (assignment_expression "pmVar7 = M.p[1][0]" identifier = (subscript_expression "M.p[1][0]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = M.n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = M.n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar23,iVar22,pmVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,pmVar23,iVar22,pmVar7)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }" else (compound_statement "{\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);\n            pmVar7 = M.p[1][0];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);\n          }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar6,pmVar7,mVar9,pmVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pmVar7 = M.p[1][0];" (assignment_expression "pmVar7 = M.p[1][0]" identifier = (subscript_expression "M.p[1][0]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "mVar9 = M.n;" (assignment_expression "mVar9 = M.n" identifier = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "*(int *)(puVar25 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar13,pmVar7,mVar9,pmVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,pmVar7,mVar9,pmVar23)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n);" (assignment_expression "mVar21 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar13,pmVar13,pmVar6,iVar22 + M.n)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,pmVar13,pmVar6,iVar22 + M.n)" ( identifier , identifier , identifier , (binary_expression "iVar22 + M.n" identifier + (field_expression "M.n" identifier . field_identifier)) )))) ;) (expression_statement "pmVar7 = M.p[1][1];" (assignment_expression "pmVar7 = M.p[1][1]" identifier = (subscript_expression "M.p[1][1]" (subscript_expression "M.p[1]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "mVar9 = M.n;" (assignment_expression "mVar9 = M.n" identifier = (field_expression "M.n" identifier . field_identifier)) ;) (if_statement "if (M.n < iVar22) {\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }\n          else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }" if (parenthesized_expression "(M.n < iVar22)" ( (binary_expression "M.n < iVar22" (field_expression "M.n" identifier . field_identifier) < identifier) )) (compound_statement "{\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);\n            pmVar7 = M.p[0][1];\n            *(mp_size_t *)(puVar25 + 0x10) = M.n;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);\n          }" { (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = M.n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = M.n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar23,iVar22,pmVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar6,pmVar23,iVar22,pmVar7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pmVar7 = M.p[0][1];" (assignment_expression "pmVar7 = M.p[0][1]" identifier = (subscript_expression "M.p[0][1]" (subscript_expression "M.p[0]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = M.n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = M.n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar12,iVar22,pmVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar23,pmVar12,iVar22,pmVar7)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }" else (compound_statement "{\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);\n            pmVar7 = M.p[0][1];\n            mVar9 = M.n;\n            *(int *)(puVar25 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);\n          }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar6,pmVar7,mVar9,pmVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar6,pmVar7,mVar9,pmVar23)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pmVar7 = M.p[0][1];" (assignment_expression "pmVar7 = M.p[0][1]" identifier = (subscript_expression "M.p[0][1]" (subscript_expression "M.p[0]" (field_expression "M.p" identifier . field_identifier) [ number_literal ]) [ number_literal ])) ;) (expression_statement "mVar9 = M.n;" (assignment_expression "mVar9 = M.n" identifier = (field_expression "M.n" identifier . field_identifier)) ;) (expression_statement "*(int *)(puVar25 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar7,mVar9,pmVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar23,pmVar7,mVar9,pmVar12)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n);" (assignment_expression "mVar20 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar23,pmVar23,pmVar6,iVar22 + M.n)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar23,pmVar23,pmVar6,iVar22 + M.n)" ( identifier , identifier , identifier , (binary_expression "iVar22 + M.n" identifier + (field_expression "M.n" identifier . field_identifier)) )))) ;) (expression_statement "iVar22 = iVar22 + M.n;" (assignment_expression "iVar22 = iVar22 + M.n" identifier = (binary_expression "iVar22 + M.n" identifier + (field_expression "M.n" identifier . field_identifier))) ;) (if_statement "if (mVar21 == 0 && mVar20 == 0) {\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }\n          else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }" if (parenthesized_expression "(mVar21 == 0 && mVar20 == 0)" ( (binary_expression "mVar21 == 0 && mVar20 == 0" (binary_expression "mVar21 == 0" identifier == number_literal) && (binary_expression "mVar20 == 0" identifier == number_literal)) )) (compound_statement "{\n            if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }\n          }" { (if_statement "if (pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0) {\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }" if (parenthesized_expression "(pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0)" ( (binary_expression "pmVar13[iVar22 + 0x3fffffff] == 0 && pmVar23[iVar22 + 0x3fffffff] == 0" (binary_expression "pmVar13[iVar22 + 0x3fffffff] == 0" (subscript_expression "pmVar13[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal) && (binary_expression "pmVar23[iVar22 + 0x3fffffff] == 0" (subscript_expression "pmVar23[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n              pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;\n              pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;\n              do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);\n            }" { (expression_statement "pmVar5 = pmVar13 + iVar22 + 0x3ffffffe;" (assignment_expression "pmVar5 = pmVar13 + iVar22 + 0x3ffffffe" identifier = (binary_expression "pmVar13 + iVar22 + 0x3ffffffe" (binary_expression "pmVar13 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "pmVar6 = pmVar23 + iVar22 + 0x3ffffffe;" (assignment_expression "pmVar6 = pmVar23 + iVar22 + 0x3ffffffe" identifier = (binary_expression "pmVar23 + iVar22 + 0x3ffffffe" (binary_expression "pmVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              } while (mVar21 == 0 && mVar20 == 0);" do (compound_statement "{\n                mVar21 = *pmVar5;\n                iVar22 = iVar22 + -1;\n                mVar20 = *pmVar6;\n                pmVar5 = pmVar5 + -1;\n                pmVar6 = pmVar6 + -1;\n              }" { (expression_statement "mVar21 = *pmVar5;" (assignment_expression "mVar21 = *pmVar5" identifier = (pointer_expression "*pmVar5" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar20 = *pmVar6;" (assignment_expression "mVar20 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar5 = pmVar5 + -1;" (assignment_expression "pmVar5 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) (expression_statement "pmVar6 = pmVar6 + -1;" (assignment_expression "pmVar6 = pmVar6 + -1" identifier = (binary_expression "pmVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0 && mVar20 == 0)" ( (binary_expression "mVar21 == 0 && mVar20 == 0" (binary_expression "mVar21 == 0" identifier == number_literal) && (binary_expression "mVar20 == 0" identifier == number_literal)) )) ;) })) }) (else_clause "else {\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }" else (compound_statement "{\n            pmVar13[iVar22] = mVar21;\n            pmVar23[iVar22] = mVar20;\n            iVar22 = iVar22 + 1;\n          }" { (expression_statement "pmVar13[iVar22] = mVar21;" (assignment_expression "pmVar13[iVar22] = mVar21" (subscript_expression "pmVar13[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "pmVar23[iVar22] = mVar20;" (assignment_expression "pmVar23[iVar22] = mVar20" (subscript_expression "pmVar23[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) }))) (if_statement "if ((int)uVar17 < 600) goto LAB_0004ef08;" if (parenthesized_expression "((int)uVar17 < 600)" ( (binary_expression "(int)uVar17 < 600" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004ef08;" goto statement_identifier ;)) })) (expression_statement "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x18)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x18)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar25 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar25 + 0x10)" * (cast_expression "(undefined **)(puVar25 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "ctx.un = iVar22;" (assignment_expression "ctx.un = iVar22" (field_expression "ctx.un" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.u0 = pmVar13;" (assignment_expression "ctx.u0 = pmVar13" (field_expression "ctx.u0" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.u1 = pmVar23;" (assignment_expression "ctx.u1 = pmVar23" (field_expression "ctx.u1" identifier . field_identifier) = identifier) ;) (expression_statement "ctx.tp = pmVar14 + uVar17;" (assignment_expression "ctx.tp = pmVar14 + uVar17" (field_expression "ctx.tp" identifier . field_identifier) = (binary_expression "pmVar14 + uVar17" identifier + identifier)) ;) (expression_statement "*(gcdext_ctx **)(puVar25 + 0x14) = &ctx;" (assignment_expression "*(gcdext_ctx **)(puVar25 + 0x14) = &ctx" (pointer_expression "*(gcdext_ctx **)(puVar25 + 0x14)" * (cast_expression "(gcdext_ctx **)(puVar25 + 0x14)" ( (type_descriptor "gcdext_ctx **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = (pointer_expression "&ctx" & identifier)) ;) (expression_statement "uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0);" (assignment_expression "uVar17 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,uVar17,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap,bp,uVar17,0)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (uVar17 == 0) goto LAB_0004f0cc;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f0cc;" goto statement_identifier ;)) (expression_statement "iVar22 = ctx.un;" (assignment_expression "iVar22 = ctx.un" identifier = (field_expression "ctx.un" identifier . field_identifier)) ;) }) while (parenthesized_expression "(599 < (int)uVar17)" ( (binary_expression "599 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0004ef08:\n    pmVar12 = ap + uVar17;" statement_identifier : (expression_statement "pmVar12 = ap + uVar17;" (assignment_expression "pmVar12 = ap + uVar17" identifier = (binary_expression "ap + uVar17" identifier + identifier)) ;)) (expression_statement "pmVar6 = bp + uVar17;" (assignment_expression "pmVar6 = bp + uVar17" identifier = (binary_expression "bp + uVar17" identifier + identifier)) ;) (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) (expression_statement "pmVar5 = pmVar12;" (assignment_expression "pmVar5 = pmVar12" identifier = identifier) ;) (expression_statement "pmVar8 = pmVar6;" (assignment_expression "pmVar8 = pmVar6" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar3 = uVar3 - 1;\n      pmVar8 = pmVar8 + -1;\n      if ((int)uVar3 < 0) break;\n      pmVar11 = pmVar5 + -1;\n      pmVar5 = pmVar5 + -1;\n      if (*pmVar11 != *pmVar8) goto LAB_0004f274;\n    }" { (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + -1;" (assignment_expression "pmVar8 = pmVar8 + -1" identifier = (binary_expression "pmVar8 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar3 < 0) break;" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar11 = pmVar5 + -1;" (assignment_expression "pmVar11 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) (expression_statement "pmVar5 = pmVar5 + -1;" (assignment_expression "pmVar5 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) (if_statement "if (*pmVar11 != *pmVar8) goto LAB_0004f274;" if (parenthesized_expression "(*pmVar11 != *pmVar8)" ( (binary_expression "*pmVar11 != *pmVar8" (pointer_expression "*pmVar11" * identifier) != (pointer_expression "*pmVar8" * identifier)) )) (goto_statement "goto LAB_0004f274;" goto statement_identifier ;)) })) (if_statement "if (uVar17 != 0) {\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      mVar21 = *ap;\n      if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }\n      *local_90 = mVar21;\n    }" { (expression_statement "mVar21 = *ap;" (assignment_expression "mVar21 = *ap" identifier = (pointer_expression "*ap" * identifier)) ;) (if_statement "if (uVar17 != 1) {\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }" if (parenthesized_expression "(uVar17 != 1)" ( (binary_expression "uVar17 != 1" identifier != number_literal) )) (compound_statement "{\n        pmVar7 = gp;\n        pmVar14 = ap + 1;\n        do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);\n        local_90 = gp + (uVar17 - 1);\n      }" { (expression_statement "pmVar7 = gp;" (assignment_expression "pmVar7 = gp" identifier = identifier) ;) (expression_statement "pmVar14 = ap + 1;" (assignment_expression "pmVar14 = ap + 1" identifier = (binary_expression "ap + 1" identifier + number_literal)) ;) (do_statement "do {\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        } while (pmVar6 != pmVar12);" do (compound_statement "{\n          *pmVar7 = mVar21;\n          pmVar6 = pmVar14 + 1;\n          mVar21 = *pmVar14;\n          pmVar7 = pmVar7 + 1;\n          pmVar14 = pmVar6;\n        }" { (expression_statement "*pmVar7 = mVar21;" (assignment_expression "*pmVar7 = mVar21" (pointer_expression "*pmVar7" * identifier) = identifier) ;) (expression_statement "pmVar6 = pmVar14 + 1;" (assignment_expression "pmVar6 = pmVar14 + 1" identifier = (binary_expression "pmVar14 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar14;" (assignment_expression "mVar21 = *pmVar14" identifier = (pointer_expression "*pmVar14" * identifier)) ;) (expression_statement "pmVar7 = pmVar7 + 1;" (assignment_expression "pmVar7 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 1" identifier + number_literal)) ;) (expression_statement "pmVar14 = pmVar6;" (assignment_expression "pmVar14 = pmVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pmVar6 != pmVar12)" ( (binary_expression "pmVar6 != pmVar12" identifier != identifier) )) ;) (expression_statement "local_90 = gp + (uVar17 - 1);" (assignment_expression "local_90 = gp + (uVar17 - 1)" identifier = (binary_expression "gp + (uVar17 - 1)" identifier + (parenthesized_expression "(uVar17 - 1)" ( (binary_expression "uVar17 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*local_90 = mVar21;" (assignment_expression "*local_90 = mVar21" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "pmVar5 = pmVar13 + iVar22;" (assignment_expression "pmVar5 = pmVar13 + iVar22" identifier = (binary_expression "pmVar13 + iVar22" identifier + identifier)) ;) (expression_statement "pmVar14 = pmVar23 + iVar22;" (assignment_expression "pmVar14 = pmVar23 + iVar22" identifier = (binary_expression "pmVar23 + iVar22" identifier + identifier)) ;) (expression_statement "iVar19 = iVar22;" (assignment_expression "iVar19 = iVar22" identifier = identifier) ;) (expression_statement "pmVar12 = pmVar5;" (assignment_expression "pmVar12 = pmVar5" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar14;" (assignment_expression "pmVar6 = pmVar14" identifier = identifier) ;) (do_statement "do {\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    } while (*pmVar8 == *pmVar6);" do (compound_statement "{\n      iVar19 = iVar19 + -1;\n      pmVar6 = pmVar6 + -1;\n      if (iVar19 < 0) goto LAB_0004efd4;\n      pmVar8 = pmVar12 + -1;\n      pmVar12 = pmVar12 + -1;\n    }" { (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "pmVar6 = pmVar6 + -1;" (assignment_expression "pmVar6 = pmVar6 + -1" identifier = (binary_expression "pmVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 < 0) goto LAB_0004efd4;" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (expression_statement "pmVar8 = pmVar12 + -1;" (assignment_expression "pmVar8 = pmVar12 + -1" identifier = (binary_expression "pmVar12 + -1" identifier + number_literal)) ;) (expression_statement "pmVar12 = pmVar12 + -1;" (assignment_expression "pmVar12 = pmVar12 + -1" identifier = (binary_expression "pmVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar8 == *pmVar6)" ( (binary_expression "*pmVar8 == *pmVar6" (pointer_expression "*pmVar8" * identifier) == (pointer_expression "*pmVar6" * identifier)) )) ;) (if_statement "if (*pmVar6 < *pmVar8) goto LAB_0004efd4;" if (parenthesized_expression "(*pmVar6 < *pmVar8)" ( (binary_expression "*pmVar6 < *pmVar8" (pointer_expression "*pmVar6" * identifier) < (pointer_expression "*pmVar8" * identifier)) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (if_statement "if (iVar22 < 1) {\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar19 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }" { (expression_statement "iVar19 = iVar22 + -1;" (assignment_expression "iVar19 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 != 0) goto LAB_0004fb70;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fb70;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }" else (compound_statement "{\n      iVar19 = iVar22 + -1;\n      if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }\nLAB_0004fb70:\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = mVar21;\n    }" { (expression_statement "iVar19 = iVar22 + -1;" (assignment_expression "iVar19 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (pmVar5[-1] == 0) {\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }" if (parenthesized_expression "(pmVar5[-1] == 0)" ( (binary_expression "pmVar5[-1] == 0" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);\n        iVar19 = iVar19 + -2;\n      }" { (do_statement "do {\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        } while (*pmVar14 == 0);" do (compound_statement "{\n          iVar19 = iVar22;\n          iVar22 = iVar19 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          pmVar14 = pmVar5 + -2;\n          pmVar5 = pmVar5 + -1;\n        }" { (expression_statement "iVar19 = iVar22;" (assignment_expression "iVar19 = iVar22" identifier = identifier) ;) (expression_statement "iVar22 = iVar19 + -1;" (assignment_expression "iVar22 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) goto LAB_0004f044;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;)) (expression_statement "pmVar14 = pmVar5 + -2;" (assignment_expression "pmVar14 = pmVar5 + -2" identifier = (binary_expression "pmVar5 + -2" identifier + number_literal)) ;) (expression_statement "pmVar5 = pmVar5 + -1;" (assignment_expression "pmVar5 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar14 == 0)" ( (binary_expression "*pmVar14 == 0" (pointer_expression "*pmVar14" * identifier) == number_literal) )) ;) (expression_statement "iVar19 = iVar19 + -2;" (assignment_expression "iVar19 = iVar19 + -2" identifier = (binary_expression "iVar19 + -2" identifier + number_literal)) ;) })) (labeled_statement "LAB_0004fb70:\n      mVar21 = *pmVar13;" statement_identifier : (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;)) (expression_statement "pmVar14 = up;" (assignment_expression "pmVar14 = up" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);\n        local_8c = up + iVar22 + -1;\n      }" { (do_statement "do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar19 != 0);" do (compound_statement "{\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar19 = iVar19 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        }" { (expression_statement "pmVar13 = pmVar13 + 1;" (assignment_expression "pmVar13 = pmVar13 + 1" identifier = (binary_expression "pmVar13 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar14 = mVar21;" (assignment_expression "*pmVar14 = mVar21" (pointer_expression "*pmVar14" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;) (expression_statement "pmVar14 = pmVar14 + 1;" (assignment_expression "pmVar14 = pmVar14 + 1" identifier = (binary_expression "pmVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = up + iVar22 + -1;" (assignment_expression "local_8c = up + iVar22 + -1" identifier = (binary_expression "up + iVar22 + -1" (binary_expression "up + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) (expression_statement "*local_8c = mVar21;" (assignment_expression "*local_8c = mVar21" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;) }))) (expression_statement "*(mp_limb_t **)(puVar25 + 0x18) = pmVar13;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x18) = pmVar13" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x18)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x18)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_size_t *)(puVar25 + 0x14) = n;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x14) = n" (pointer_expression "*(mp_size_t *)(puVar25 + 0x14)" * (cast_expression "(mp_size_t *)(puVar25 + 0x14)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004f4dc:\n  *(mp_ptr *)(puVar25 + 0x10) = bp;" statement_identifier : (expression_statement "*(mp_ptr *)(puVar25 + 0x10) = bp;" (assignment_expression "*(mp_ptr *)(puVar25 + 0x10) = bp" (pointer_expression "*(mp_ptr *)(puVar25 + 0x10)" * (cast_expression "(mp_ptr *)(puVar25 + 0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap);" (assignment_expression "n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,up,usizep,ap)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(gp,up,usizep,ap)" ( identifier , identifier , identifier , identifier )))) ;) (labeled_statement "joined_r0x0004f3e8:\n  while( true ) {\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }" statement_identifier : (while_statement "while( true ) {\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;\n    uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar4 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar26) = iVar4;\nLAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }\n    *usizep = iVar22;\n  }" { (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\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_0009d618)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0004f0dc:\n    if (iVar15 == *(int *)puVar2) break;" statement_identifier : (if_statement "if (iVar15 == *(int *)puVar2) break;" if (parenthesized_expression "(iVar15 == *(int *)puVar2)" ( (binary_expression "iVar15 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;))) (expression_statement "uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)();" (assignment_expression "uVar26 = (*(code *)PTR___stack_chk_fail_0009d4d0)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_0004fc80:\n    iVar4 = 1;" statement_identifier : (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar26 >> 0x20);" statement_identifier : (expression_statement "iVar22 = (int)((ulonglong)uVar26 >> 0x20);" (assignment_expression "iVar22 = (int)((ulonglong)uVar26 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar26 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar26 >> 0x20)" ( (binary_expression "(ulonglong)uVar26 >> 0x20" (cast_expression "(ulonglong)uVar26" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "*(int *)((int)local_8c + (int)uVar26) = iVar4;" (assignment_expression "*(int *)((int)local_8c + (int)uVar26) = iVar4" (pointer_expression "*(int *)((int)local_8c + (int)uVar26)" * (cast_expression "(int *)((int)local_8c + (int)uVar26)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_8c + (int)uVar26)" ( (binary_expression "(int)local_8c + (int)uVar26" (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (labeled_statement "LAB_0004f6f8:\n    if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }" statement_identifier : (if_statement "if (uVar17 != 0) {\n      iVar22 = -iVar22;\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = -iVar22;\n    }" { (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) }))) (expression_statement "*usizep = iVar22;" (assignment_expression "*usizep = iVar22" (pointer_expression "*usizep" * identifier) = identifier) ;) }))) (return_statement "return n;" return identifier ;) (labeled_statement "LAB_0004efd4:\n  mVar21 = pmVar14[-1];" statement_identifier : (expression_statement "mVar21 = pmVar14[-1];" (assignment_expression "mVar21 = pmVar14[-1]" identifier = (subscript_expression "pmVar14[-1]" identifier [ number_literal ])) ;)) (while_statement "while (mVar21 == 0) {\n    iVar22 = iVar22 + -1;\n    mVar21 = pmVar14[-2];\n    pmVar14 = pmVar14 + -1;\n  }" while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar22 = iVar22 + -1;\n    mVar21 = pmVar14[-2];\n    pmVar14 = pmVar14 + -1;\n  }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = pmVar14[-2];" (assignment_expression "mVar21 = pmVar14[-2]" identifier = (subscript_expression "pmVar14[-2]" identifier [ number_literal ])) ;) (expression_statement "pmVar14 = pmVar14 + -1;" (assignment_expression "pmVar14 = pmVar14 + -1" identifier = (binary_expression "pmVar14 + -1" identifier + number_literal)) ;) })) (if_statement "if (iVar22 != 0) {\n    iVar19 = iVar22 + -1;\n    mVar21 = *pmVar23;\n    pmVar13 = up;\n    if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }\n    *local_8c = mVar21;\n  }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar19 = iVar22 + -1;\n    mVar21 = *pmVar23;\n    pmVar13 = up;\n    if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }\n    *local_8c = mVar21;\n  }" { (expression_statement "iVar19 = iVar22 + -1;" (assignment_expression "iVar19 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar23;" (assignment_expression "mVar21 = *pmVar23" identifier = (pointer_expression "*pmVar23" * identifier)) ;) (expression_statement "pmVar13 = up;" (assignment_expression "pmVar13 = up" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);\n      local_8c = up + iVar22 + -1;\n    }" { (do_statement "do {\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      } while (iVar19 != 0);" do (compound_statement "{\n        pmVar23 = pmVar23 + 1;\n        *pmVar13 = mVar21;\n        iVar19 = iVar19 + -1;\n        mVar21 = *pmVar23;\n        pmVar13 = pmVar13 + 1;\n      }" { (expression_statement "pmVar23 = pmVar23 + 1;" (assignment_expression "pmVar23 = pmVar23 + 1" identifier = (binary_expression "pmVar23 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar13 = mVar21;" (assignment_expression "*pmVar13 = mVar21" (pointer_expression "*pmVar13" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar23;" (assignment_expression "mVar21 = *pmVar23" identifier = (pointer_expression "*pmVar23" * identifier)) ;) (expression_statement "pmVar13 = pmVar13 + 1;" (assignment_expression "pmVar13 = pmVar13 + 1" identifier = (binary_expression "pmVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = up + iVar22 + -1;" (assignment_expression "local_8c = up + iVar22 + -1" identifier = (binary_expression "up + iVar22 + -1" (binary_expression "up + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*local_8c = mVar21;" (assignment_expression "*local_8c = mVar21" (pointer_expression "*local_8c" * identifier) = identifier) ;) })) (labeled_statement "LAB_0004f044:\n  *usizep = iVar22;" statement_identifier : (expression_statement "*usizep = iVar22;" (assignment_expression "*usizep = iVar22" (pointer_expression "*usizep" * identifier) = identifier) ;)) (expression_statement "n = uVar17;" (assignment_expression "n = uVar17" identifier = identifier) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) (labeled_statement "LAB_0004f274:\n  if ((*pmVar13 != 0) || (iVar22 != 1)) {\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }" statement_identifier : (if_statement "if ((*pmVar13 != 0) || (iVar22 != 1)) {\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "((*pmVar13 != 0) || (iVar22 != 1))" ( (binary_expression "(*pmVar13 != 0) || (iVar22 != 1)" (parenthesized_expression "(*pmVar13 != 0)" ( (binary_expression "*pmVar13 != 0" (pointer_expression "*pmVar13" * identifier) != number_literal) )) || (parenthesized_expression "(iVar22 != 1)" ( (binary_expression "iVar22 != 1" identifier != number_literal) ))) )) (compound_statement "{\n    pmVar5 = pmVar14 + uVar17;\n    pmVar8 = pmVar5 + uVar17;\n    if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }\n    *(uint *)(puVar25 + 0x14) = uVar17;\n    *(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;\n    *(mp_limb_t **)(puVar25 + 0x10) = pmVar8;\n    n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);\n    mVar9 = lehmer_un;\n    iVar19 = lehmer_un;\n    iVar4 = iVar22;\n    if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }\nLAB_0004f338:\n    *usizep = iVar19;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "pmVar5 = pmVar14 + uVar17;" (assignment_expression "pmVar5 = pmVar14 + uVar17" identifier = (binary_expression "pmVar14 + uVar17" identifier + identifier)) ;) (expression_statement "pmVar8 = pmVar5 + uVar17;" (assignment_expression "pmVar8 = pmVar5 + uVar17" identifier = (binary_expression "pmVar5 + uVar17" identifier + identifier)) ;) (if_statement "if (uVar17 != 0) {\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      mVar21 = *ap;\n      mVar20 = *bp;\n      if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }\n    }" { (expression_statement "mVar21 = *ap;" (assignment_expression "mVar21 = *ap" identifier = (pointer_expression "*ap" * identifier)) ;) (expression_statement "mVar20 = *bp;" (assignment_expression "mVar20 = *bp" identifier = (pointer_expression "*bp" * identifier)) ;) (if_statement "if (uVar17 == 1) {\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }\n      else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }" if (parenthesized_expression "(uVar17 == 1)" ( (binary_expression "uVar17 == 1" identifier == number_literal) )) (compound_statement "{\n        *pmVar5 = mVar21;\n        *pmVar8 = mVar20;\n      }" { (expression_statement "*pmVar5 = mVar21;" (assignment_expression "*pmVar5 = mVar21" (pointer_expression "*pmVar5" * identifier) = identifier) ;) (expression_statement "*pmVar8 = mVar20;" (assignment_expression "*pmVar8 = mVar20" (pointer_expression "*pmVar8" * identifier) = identifier) ;) }) (else_clause "else {\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }" else (compound_statement "{\n        pmVar11 = ap + 1;\n        pmVar16 = pmVar5;\n        do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);\n        pmVar8[-1] = mVar21;\n        pmVar11 = bp + 1;\n        pmVar16 = pmVar8;\n        do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);\n        pmVar8[uVar17 - 1] = mVar20;\n      }" { (expression_statement "pmVar11 = ap + 1;" (assignment_expression "pmVar11 = ap + 1" identifier = (binary_expression "ap + 1" identifier + number_literal)) ;) (expression_statement "pmVar16 = pmVar5;" (assignment_expression "pmVar16 = pmVar5" identifier = identifier) ;) (do_statement "do {\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar12);" do (compound_statement "{\n          *pmVar16 = mVar21;\n          pmVar10 = pmVar11 + 1;\n          mVar21 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        }" { (expression_statement "*pmVar16 = mVar21;" (assignment_expression "*pmVar16 = mVar21" (pointer_expression "*pmVar16" * identifier) = identifier) ;) (expression_statement "pmVar10 = pmVar11 + 1;" (assignment_expression "pmVar10 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar11;" (assignment_expression "mVar21 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "pmVar11 = pmVar10;" (assignment_expression "pmVar11 = pmVar10" identifier = identifier) ;) (expression_statement "pmVar16 = pmVar16 + 1;" (assignment_expression "pmVar16 = pmVar16 + 1" identifier = (binary_expression "pmVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar10 != pmVar12)" ( (binary_expression "pmVar10 != pmVar12" identifier != identifier) )) ;) (expression_statement "pmVar8[-1] = mVar21;" (assignment_expression "pmVar8[-1] = mVar21" (subscript_expression "pmVar8[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pmVar11 = bp + 1;" (assignment_expression "pmVar11 = bp + 1" identifier = (binary_expression "bp + 1" identifier + number_literal)) ;) (expression_statement "pmVar16 = pmVar8;" (assignment_expression "pmVar16 = pmVar8" identifier = identifier) ;) (do_statement "do {\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        } while (pmVar10 != pmVar6);" do (compound_statement "{\n          *pmVar16 = mVar20;\n          pmVar10 = pmVar11 + 1;\n          mVar20 = *pmVar11;\n          pmVar11 = pmVar10;\n          pmVar16 = pmVar16 + 1;\n        }" { (expression_statement "*pmVar16 = mVar20;" (assignment_expression "*pmVar16 = mVar20" (pointer_expression "*pmVar16" * identifier) = identifier) ;) (expression_statement "pmVar10 = pmVar11 + 1;" (assignment_expression "pmVar10 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "mVar20 = *pmVar11;" (assignment_expression "mVar20 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "pmVar11 = pmVar10;" (assignment_expression "pmVar11 = pmVar10" identifier = identifier) ;) (expression_statement "pmVar16 = pmVar16 + 1;" (assignment_expression "pmVar16 = pmVar16 + 1" identifier = (binary_expression "pmVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar10 != pmVar6)" ( (binary_expression "pmVar10 != pmVar6" identifier != identifier) )) ;) (expression_statement "pmVar8[uVar17 - 1] = mVar20;" (assignment_expression "pmVar8[uVar17 - 1] = mVar20" (subscript_expression "pmVar8[uVar17 - 1]" identifier [ (binary_expression "uVar17 - 1" identifier - number_literal) ]) = identifier) ;) }))) })) (expression_statement "*(uint *)(puVar25 + 0x14) = uVar17;" (assignment_expression "*(uint *)(puVar25 + 0x14) = uVar17" (pointer_expression "*(uint *)(puVar25 + 0x14)" * (cast_expression "(uint *)(puVar25 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x18) = pmVar8 + uVar17" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x18)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x18)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = (binary_expression "pmVar8 + uVar17" identifier + identifier)) ;) (expression_statement "*(mp_limb_t **)(puVar25 + 0x10) = pmVar8;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x10) = pmVar8" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x10)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x10)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5);" (assignment_expression "n = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(gp,pmVar14,&lehmer_un,pmVar5)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(gp,pmVar14,&lehmer_un,pmVar5)" ( identifier , identifier , (pointer_expression "&lehmer_un" & identifier) , identifier )))) ;) (expression_statement "mVar9 = lehmer_un;" (assignment_expression "mVar9 = lehmer_un" identifier = identifier) ;) (expression_statement "iVar19 = lehmer_un;" (assignment_expression "iVar19 = lehmer_un" identifier = identifier) ;) (expression_statement "iVar4 = iVar22;" (assignment_expression "iVar4 = iVar22" identifier = identifier) ;) (if_statement "if (iVar22 < 1) {\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      if (lehmer_un != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }" { (if_statement "if (lehmer_un != 0) goto LAB_0004f508;" if (parenthesized_expression "(lehmer_un != 0)" ( (binary_expression "lehmer_un != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;)) (if_statement "if (iVar22 != 0) goto LAB_0004f480;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f480;" goto statement_identifier ;)) }) (else_clause "else {\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }" else (compound_statement "{\n      if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }\n      if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar4 + -1;\n      mVar21 = *pmVar13;\n      pmVar14 = up;\n      if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }\n      iVar19 = -iVar4;\n      *local_8c = mVar21;\n    }" { (if_statement "if (pmVar13[iVar22 + -1] == 0) {\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }" if (parenthesized_expression "(pmVar13[iVar22 + -1] == 0)" ( (binary_expression "pmVar13[iVar22 + -1] == 0" (subscript_expression "pmVar13[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n        pmVar8 = pmVar13 + iVar22;\n        do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);\n      }" { (expression_statement "pmVar8 = pmVar13 + iVar22;" (assignment_expression "pmVar8 = pmVar13 + iVar22" identifier = (binary_expression "pmVar13 + iVar22" identifier + identifier)) ;) (do_statement "do {\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        } while (*pmVar11 == 0);" do (compound_statement "{\n          iVar4 = iVar4 + -1;\n          if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          pmVar11 = pmVar8 + -2;\n          pmVar8 = pmVar8 + -1;\n        }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 == 0) {\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            if (lehmer_un == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" { (if_statement "if (lehmer_un == 0) goto LAB_0004f338;" if (parenthesized_expression "(lehmer_un == 0)" ( (binary_expression "lehmer_un == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f338;" goto statement_identifier ;)) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;) })) (expression_statement "pmVar11 = pmVar8 + -2;" (assignment_expression "pmVar11 = pmVar8 + -2" identifier = (binary_expression "pmVar8 + -2" identifier + number_literal)) ;) (expression_statement "pmVar8 = pmVar8 + -1;" (assignment_expression "pmVar8 = pmVar8 + -1" identifier = (binary_expression "pmVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar11 == 0)" ( (binary_expression "*pmVar11 == 0" (pointer_expression "*pmVar11" * identifier) == number_literal) )) ;) })) (if_statement "if (lehmer_un != 0) {\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" if (parenthesized_expression "(lehmer_un != 0)" ( (binary_expression "lehmer_un != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;\n        if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }\n        uVar3 = uVar17;\n        if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }\n        iVar19 = iVar19 + uVar3;\n        if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar1 = lehmer_un < 1;\n        if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }\n        mVar9 = lehmer_un;\n        uVar17 = (uint)bVar1;\n        if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }\n        if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }\n        iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);\n        if (iVar24 < 1) goto LAB_0004f6f8;\n        if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }\n        iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);\n        if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }\nLAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" { (labeled_statement "LAB_0004f508:\n        pmVar8 = pmVar5 + uVar17 + 1;" statement_identifier : (expression_statement "pmVar8 = pmVar5 + uVar17 + 1;" (assignment_expression "pmVar8 = pmVar5 + uVar17 + 1" identifier = (binary_expression "pmVar5 + uVar17 + 1" (binary_expression "pmVar5 + uVar17" identifier + identifier) + number_literal)) ;)) (if_statement "if (lehmer_un < 0) {\n          iVar19 = -lehmer_un;\n        }" if (parenthesized_expression "(lehmer_un < 0)" ( (binary_expression "lehmer_un < 0" identifier < number_literal) )) (compound_statement "{\n          iVar19 = -lehmer_un;\n        }" { (expression_statement "iVar19 = -lehmer_un;" (assignment_expression "iVar19 = -lehmer_un" identifier = (unary_expression "-lehmer_un" - identifier)) ;) })) (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) (if_statement "if ((int)uVar17 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }\n        else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }" if (parenthesized_expression "((int)uVar17 < 1)" ( (binary_expression "(int)uVar17 < 1" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);\n        }" { (labeled_statement "LAB_0004f550:\n          *(uint *)(puVar25 + 0x10) = uVar3;" statement_identifier : (expression_statement "*(uint *)(puVar25 + 0x10) = uVar3;" (assignment_expression "*(uint *)(puVar25 + 0x10) = uVar3" (pointer_expression "*(uint *)(puVar25 + 0x10)" * (cast_expression "(uint *)(puVar25 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,pmVar14,iVar19,ap)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar8,pmVar14,iVar19,ap)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }" else (compound_statement "{\n          mVar21 = pmVar12[-1];\n          while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }\n          if ((int)uVar3 < iVar19) goto LAB_0004f550;\n          *(int *)(puVar25 + 0x10) = iVar19;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);\n        }" { (expression_statement "mVar21 = pmVar12[-1];" (assignment_expression "mVar21 = pmVar12[-1]" identifier = (subscript_expression "pmVar12[-1]" identifier [ number_literal ])) ;) (while_statement "while (mVar21 == 0) {\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }" while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar3 = uVar3 - 1;\n            if (uVar3 == 0) goto LAB_0004f550;\n            mVar21 = pmVar12[-2];\n            pmVar12 = pmVar12 + -1;\n          }" { (expression_statement "uVar3 = uVar3 - 1;" (assignment_expression "uVar3 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (if_statement "if (uVar3 == 0) goto LAB_0004f550;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "mVar21 = pmVar12[-2];" (assignment_expression "mVar21 = pmVar12[-2]" identifier = (subscript_expression "pmVar12[-2]" identifier [ number_literal ])) ;) (expression_statement "pmVar12 = pmVar12 + -1;" (assignment_expression "pmVar12 = pmVar12 + -1" identifier = (binary_expression "pmVar12 + -1" identifier + number_literal)) ;) })) (if_statement "if ((int)uVar3 < iVar19) goto LAB_0004f550;" if (parenthesized_expression "((int)uVar3 < iVar19)" ( (binary_expression "(int)uVar3 < iVar19" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "*(int *)(puVar25 + 0x10) = iVar19;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar19" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar8,ap,uVar3,pmVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar8,ap,uVar3,pmVar14)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar19 = iVar19 + uVar3;" (assignment_expression "iVar19 = iVar19 + uVar3" identifier = (binary_expression "iVar19 + uVar3" identifier + identifier)) ;) (if_statement "if (mVar9 < 1) {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }\n        else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }" if (parenthesized_expression "(mVar9 < 1)" ( (binary_expression "mVar9 < 1" identifier < number_literal) )) (compound_statement "{\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);\n          iVar24 = iVar19 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }\n          *(uint *)(puVar25 + 0x10) = uVar17;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);\n          iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);\n        }" { (if_statement "if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19))" ( (binary_expression "((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)" (parenthesized_expression "((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0))" ( (binary_expression "(n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)" (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0)" ( (comma_expression "iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n), iVar24 != 0" (assignment_expression "iVar24 = (*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(pmVar8,pmVar8,gp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar8,pmVar8,gp,n)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar24 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(n < iVar19)" ( (binary_expression "n < iVar19" identifier < identifier) ))) )) (compound_statement "{\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 + 1;\n            if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }" { (expression_statement "pmVar12 = pmVar8 + n;" (assignment_expression "pmVar12 = pmVar8 + n" identifier = (binary_expression "pmVar8 + n" identifier + identifier)) ;) (expression_statement "mVar21 = *pmVar12;" (assignment_expression "mVar21 = *pmVar12" identifier = (pointer_expression "*pmVar12" * identifier)) ;) (expression_statement "*pmVar12 = mVar21 + 1;" (assignment_expression "*pmVar12 = mVar21 + 1" (pointer_expression "*pmVar12" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if ((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }" if (parenthesized_expression "((mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19))" ( (binary_expression "(mVar21 + 1 == 0) && ((int)(n + 1U) < iVar19)" (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) && (parenthesized_expression "((int)(n + 1U) < iVar19)" ( (binary_expression "(int)(n + 1U) < iVar19" (cast_expression "(int)(n + 1U)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(n + 1U)" ( (binary_expression "n + 1U" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              mVar21 = pmVar8[n + 1] + 1;\n              pmVar8[n + 1] = mVar21;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }\n            }" { (expression_statement "mVar21 = pmVar8[n + 1] + 1;" (assignment_expression "mVar21 = pmVar8[n + 1] + 1" identifier = (binary_expression "pmVar8[n + 1] + 1" (subscript_expression "pmVar8[n + 1]" identifier [ (binary_expression "n + 1" identifier + number_literal) ]) + number_literal)) ;) (expression_statement "pmVar8[n + 1] = mVar21;" (assignment_expression "pmVar8[n + 1] = mVar21" (subscript_expression "pmVar8[n + 1]" identifier [ (binary_expression "n + 1" identifier + number_literal) ]) = identifier) ;) (for_statement "for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }" for ( (assignment_expression "iVar24 = n + 2" identifier = (binary_expression "n + 2" identifier + number_literal)) ; (parenthesized_expression "(mVar21 == 0 && (iVar19 != iVar24))" ( (binary_expression "mVar21 == 0 && (iVar19 != iVar24)" (binary_expression "mVar21 == 0" identifier == number_literal) && (parenthesized_expression "(iVar19 != iVar24)" ( (binary_expression "iVar19 != iVar24" identifier != identifier) ))) )) ; (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ) (compound_statement "{\n                mVar21 = pmVar12[2] + 1;\n                pmVar12[2] = mVar21;\n                pmVar12 = pmVar12 + 1;\n              }" { (expression_statement "mVar21 = pmVar12[2] + 1;" (assignment_expression "mVar21 = pmVar12[2] + 1" identifier = (binary_expression "pmVar12[2] + 1" (subscript_expression "pmVar12[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "pmVar12[2] = mVar21;" (assignment_expression "pmVar12[2] = mVar21" (subscript_expression "pmVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pmVar12 = pmVar12 + 1;" (assignment_expression "pmVar12 = pmVar12 + 1" identifier = (binary_expression "pmVar12 + 1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0);" (assignment_expression "iVar19 = iVar19 - (uint)(pmVar8[iVar19 + -1] == 0)" identifier = (binary_expression "iVar19 - (uint)(pmVar8[iVar19 + -1] == 0)" identifier - (call_expression "(uint)(pmVar8[iVar19 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pmVar8[iVar19 + -1] == 0)" ( (binary_expression "pmVar8[iVar19 + -1] == 0" (subscript_expression "pmVar8[iVar19 + -1]" identifier [ (binary_expression "iVar19 + -1" identifier + number_literal) ]) == number_literal) ))))) ;) (expression_statement "iVar24 = iVar19 + 1;" (assignment_expression "iVar24 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0004f728:\n          if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }" statement_identifier : (if_statement "if (0 < (int)uVar17) {\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            mVar21 = pmVar6[-1];\n            while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }\n          }" { (expression_statement "mVar21 = pmVar6[-1];" (assignment_expression "mVar21 = pmVar6[-1]" identifier = (subscript_expression "pmVar6[-1]" identifier [ number_literal ])) ;) (while_statement "while (mVar21 == 0) {\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }" while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar17 = uVar17 - 1;\n              if (uVar17 == 0) break;\n              mVar21 = pmVar6[-2];\n              pmVar6 = pmVar6 + -1;\n            }" { (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) break;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "mVar21 = pmVar6[-2];" (assignment_expression "mVar21 = pmVar6[-2]" identifier = (subscript_expression "pmVar6[-2]" identifier [ number_literal ])) ;) (expression_statement "pmVar6 = pmVar6 + -1;" (assignment_expression "pmVar6 = pmVar6 + -1" identifier = (binary_expression "pmVar6 + -1" identifier + number_literal)) ;) })) }))) (expression_statement "*(uint *)(puVar25 + 0x10) = uVar17;" (assignment_expression "*(uint *)(puVar25 + 0x10) = uVar17" (pointer_expression "*(uint *)(puVar25 + 0x10)" * (cast_expression "(uint *)(puVar25 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp);" (call_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)(pmVar5,pmVar8,iVar19,bp)" (parenthesized_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)" ( (pointer_expression "*(code *)PTR___gmpn_divexact_0009d4b4" * (cast_expression "(code *)PTR___gmpn_divexact_0009d4b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar5,pmVar8,iVar19,bp)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0);" (assignment_expression "iVar24 = (iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0)" identifier = (binary_expression "(iVar24 - uVar17) - (uint)(pmVar5[(iVar24 - uVar17) + -1] == 0)" (parenthesized_expression "(iVar24 - uVar17)" ( (binary_expression "iVar24 - uVar17" identifier - identifier) )) - (call_expression "(uint)(pmVar5[(iVar24 - uVar17) + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pmVar5[(iVar24 - uVar17) + -1] == 0)" ( (binary_expression "pmVar5[(iVar24 - uVar17) + -1] == 0" (subscript_expression "pmVar5[(iVar24 - uVar17) + -1]" identifier [ (binary_expression "(iVar24 - uVar17) + -1" (parenthesized_expression "(iVar24 - uVar17)" ( (binary_expression "iVar24 - uVar17" identifier - identifier) )) + number_literal) ]) == number_literal) ))))) ;) }) (else_clause "else {\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }" else (compound_statement "{\n          if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }\n          if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }\n          iVar24 = 0;\n          if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }\n        }" { (if_statement "if (((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)) {\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19))" ( (binary_expression "((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)) &&\n             (n < iVar19)" (parenthesized_expression "((n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0))" ( (binary_expression "(n != 0) &&\n              (iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)" (parenthesized_expression "(n != 0)" ( (binary_expression "n != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0)" ( (comma_expression "iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n), iVar24 != 0" (assignment_expression "iVar24 = (*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(pmVar8,pmVar8,gp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_0009d514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_0009d514" * (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar8,pmVar8,gp,n)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar24 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(n < iVar19)" ( (binary_expression "n < iVar19" identifier < identifier) ))) )) (compound_statement "{\n            pmVar12 = pmVar8 + n;\n            mVar21 = *pmVar12;\n            *pmVar12 = mVar21 - 1;\n            if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }\n          }" { (expression_statement "pmVar12 = pmVar8 + n;" (assignment_expression "pmVar12 = pmVar8 + n" identifier = (binary_expression "pmVar8 + n" identifier + identifier)) ;) (expression_statement "mVar21 = *pmVar12;" (assignment_expression "mVar21 = *pmVar12" identifier = (pointer_expression "*pmVar12" * identifier)) ;) (expression_statement "*pmVar12 = mVar21 - 1;" (assignment_expression "*pmVar12 = mVar21 - 1" (pointer_expression "*pmVar12" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if ((mVar21 == 0) && ((int)(n + 1U) < iVar19)) {\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }" if (parenthesized_expression "((mVar21 == 0) && ((int)(n + 1U) < iVar19))" ( (binary_expression "(mVar21 == 0) && ((int)(n + 1U) < iVar19)" (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)(n + 1U) < iVar19)" ( (binary_expression "(int)(n + 1U) < iVar19" (cast_expression "(int)(n + 1U)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(n + 1U)" ( (binary_expression "n + 1U" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              mVar21 = pmVar8[n + 1];\n              pmVar8[n + 1] = mVar21 - 1;\n              for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }\n            }" { (expression_statement "mVar21 = pmVar8[n + 1];" (assignment_expression "mVar21 = pmVar8[n + 1]" identifier = (subscript_expression "pmVar8[n + 1]" identifier [ (binary_expression "n + 1" identifier + number_literal) ])) ;) (expression_statement "pmVar8[n + 1] = mVar21 - 1;" (assignment_expression "pmVar8[n + 1] = mVar21 - 1" (subscript_expression "pmVar8[n + 1]" identifier [ (binary_expression "n + 1" identifier + number_literal) ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (for_statement "for (iVar24 = n + 2; (mVar21 == 0 && (iVar19 != iVar24)); iVar24 = iVar24 + 1) {\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }" for ( (assignment_expression "iVar24 = n + 2" identifier = (binary_expression "n + 2" identifier + number_literal)) ; (parenthesized_expression "(mVar21 == 0 && (iVar19 != iVar24))" ( (binary_expression "mVar21 == 0 && (iVar19 != iVar24)" (binary_expression "mVar21 == 0" identifier == number_literal) && (parenthesized_expression "(iVar19 != iVar24)" ( (binary_expression "iVar19 != iVar24" identifier != identifier) ))) )) ; (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ) (compound_statement "{\n                mVar21 = pmVar12[2];\n                pmVar12[2] = mVar21 - 1;\n                pmVar12 = pmVar12 + 1;\n              }" { (expression_statement "mVar21 = pmVar12[2];" (assignment_expression "mVar21 = pmVar12[2]" identifier = (subscript_expression "pmVar12[2]" identifier [ number_literal ])) ;) (expression_statement "pmVar12[2] = mVar21 - 1;" (assignment_expression "pmVar12[2] = mVar21 - 1" (subscript_expression "pmVar12[2]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar12 = pmVar12 + 1;" (assignment_expression "pmVar12 = pmVar12 + 1" identifier = (binary_expression "pmVar12 + 1" identifier + number_literal)) ;) })) })) })) (if_statement "if (0 < iVar19) {\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n            if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;\n            pmVar12 = pmVar8 + iVar19;\n            do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);\n            goto LAB_0004f728;\n          }" { (if_statement "if (pmVar8[iVar19 + -1] != 0) goto LAB_0004f720;" if (parenthesized_expression "(pmVar8[iVar19 + -1] != 0)" ( (binary_expression "pmVar8[iVar19 + -1] != 0" (subscript_expression "pmVar8[iVar19 + -1]" identifier [ (binary_expression "iVar19 + -1" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_0004f720;" goto statement_identifier ;)) (expression_statement "pmVar12 = pmVar8 + iVar19;" (assignment_expression "pmVar12 = pmVar8 + iVar19" identifier = (binary_expression "pmVar8 + iVar19" identifier + identifier)) ;) (do_statement "do {\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            } while (*pmVar11 == 0);" do (compound_statement "{\n              iVar24 = iVar19;\n              iVar19 = iVar24 + -1;\n              if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }\n              pmVar11 = pmVar12 + -2;\n              pmVar12 = pmVar12 + -1;\n            }" { (expression_statement "iVar24 = iVar19;" (assignment_expression "iVar24 = iVar19" identifier = identifier) ;) (expression_statement "iVar19 = iVar24 + -1;" (assignment_expression "iVar19 = iVar24 + -1" identifier = (binary_expression "iVar24 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 == 0) {\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar24 = 0;\n                goto LAB_0004f5f0;\n              }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f5f0;" goto statement_identifier ;) })) (expression_statement "pmVar11 = pmVar12 + -2;" (assignment_expression "pmVar11 = pmVar12 + -2" identifier = (binary_expression "pmVar12 + -2" identifier + number_literal)) ;) (expression_statement "pmVar12 = pmVar12 + -1;" (assignment_expression "pmVar12 = pmVar12 + -1" identifier = (binary_expression "pmVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar11 == 0)" ( (binary_expression "*pmVar11 == 0" (pointer_expression "*pmVar11" * identifier) == number_literal) )) ;) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (if_statement "if (iVar19 != 0) {\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f720:\n            iVar24 = iVar19 + 1;\n            goto LAB_0004f728;\n          }" { (labeled_statement "LAB_0004f720:\n            iVar24 = iVar19 + 1;" statement_identifier : (expression_statement "iVar24 = iVar19 + 1;" (assignment_expression "iVar24 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;)) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f5f0:\n        bVar1 = lehmer_un < 1;" statement_identifier : (expression_statement "bVar1 = lehmer_un < 1;" (assignment_expression "bVar1 = lehmer_un < 1" identifier = (binary_expression "lehmer_un < 1" identifier < number_literal)) ;)) (if_statement "if (bVar1) {\n          lehmer_un = -lehmer_un;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          lehmer_un = -lehmer_un;\n        }" { (expression_statement "lehmer_un = -lehmer_un;" (assignment_expression "lehmer_un = -lehmer_un" identifier = (unary_expression "-lehmer_un" - identifier)) ;) })) (expression_statement "mVar9 = lehmer_un;" (assignment_expression "mVar9 = lehmer_un" identifier = identifier) ;) (expression_statement "uVar17 = (uint)bVar1;" (assignment_expression "uVar17 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((0 < iVar22) && (pmVar23[iVar22 + -1] == 0)) {\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }" if (parenthesized_expression "((0 < iVar22) && (pmVar23[iVar22 + -1] == 0))" ( (binary_expression "(0 < iVar22) && (pmVar23[iVar22 + -1] == 0)" (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) && (parenthesized_expression "(pmVar23[iVar22 + -1] == 0)" ( (binary_expression "pmVar23[iVar22 + -1] == 0" (subscript_expression "pmVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n          pmVar12 = pmVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);\n        }" { (expression_statement "pmVar12 = pmVar23 + iVar22;" (assignment_expression "pmVar12 = pmVar23 + iVar22" identifier = (binary_expression "pmVar23 + iVar22" identifier + identifier)) ;) (do_statement "do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          } while (*pmVar6 == 0);" do (compound_statement "{\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            pmVar6 = pmVar12 + -2;\n            pmVar12 = pmVar12 + -1;\n          }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) break;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar6 = pmVar12 + -2;" (assignment_expression "pmVar6 = pmVar12 + -2" identifier = (binary_expression "pmVar12 + -2" identifier + number_literal)) ;) (expression_statement "pmVar12 = pmVar12 + -1;" (assignment_expression "pmVar12 = pmVar12 + -1" identifier = (binary_expression "pmVar12 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar6 == 0)" ( (binary_expression "*pmVar6 == 0" (pointer_expression "*pmVar6" * identifier) == number_literal) )) ;) })) (if_statement "if (iVar22 < lehmer_un) {\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }\n        else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }" if (parenthesized_expression "(iVar22 < lehmer_un)" ( (binary_expression "iVar22 < lehmer_un" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar25 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);\n        }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar14,mVar9,pmVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(up,pmVar14,mVar9,pmVar23)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }" else (compound_statement "{\n          *(mp_size_t *)(puVar25 + 0x10) = lehmer_un;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);\n        }" { (expression_statement "*(mp_size_t *)(puVar25 + 0x10) = lehmer_un;" (assignment_expression "*(mp_size_t *)(puVar25 + 0x10) = lehmer_un" (pointer_expression "*(mp_size_t *)(puVar25 + 0x10)" * (cast_expression "(mp_size_t *)(puVar25 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(up,pmVar23,iVar22,pmVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(up,pmVar23,iVar22,pmVar14)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0);" (assignment_expression "iVar22 = (iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0)" identifier = (binary_expression "(iVar22 + lehmer_un) - (uint)(up[iVar22 + lehmer_un + -1] == 0)" (parenthesized_expression "(iVar22 + lehmer_un)" ( (binary_expression "iVar22 + lehmer_un" identifier + identifier) )) - (call_expression "(uint)(up[iVar22 + lehmer_un + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(up[iVar22 + lehmer_un + -1] == 0)" ( (binary_expression "up[iVar22 + lehmer_un + -1] == 0" (subscript_expression "up[iVar22 + lehmer_un + -1]" identifier [ (binary_expression "iVar22 + lehmer_un + -1" (binary_expression "iVar22 + lehmer_un" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar24 < 1) goto LAB_0004f6f8;" if (parenthesized_expression "(iVar24 < 1)" ( (binary_expression "iVar24 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0004f6f8;" goto statement_identifier ;)) (if_statement "if (iVar4 < iVar24) {\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }\n        else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }" if (parenthesized_expression "(iVar4 < iVar24)" ( (binary_expression "iVar4 < iVar24" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar25 + 0x10) = iVar4;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);\n        }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar4;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar4" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar5,iVar24,pmVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar23,pmVar5,iVar24,pmVar13)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }" else (compound_statement "{\n          *(int *)(puVar25 + 0x10) = iVar24;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);\n        }" { (expression_statement "*(int *)(puVar25 + 0x10) = iVar24;" (assignment_expression "*(int *)(puVar25 + 0x10) = iVar24" (pointer_expression "*(int *)(puVar25 + 0x10)" * (cast_expression "(int *)(puVar25 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(pmVar23,pmVar13,iVar4,pmVar5)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar23,pmVar13,iVar4,pmVar5)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0);" (assignment_expression "iVar19 = (iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0)" identifier = (binary_expression "(iVar24 + iVar4) - (uint)(pmVar23[iVar24 + iVar4 + -1] == 0)" (parenthesized_expression "(iVar24 + iVar4)" ( (binary_expression "iVar24 + iVar4" identifier + identifier) )) - (call_expression "(uint)(pmVar23[iVar24 + iVar4 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pmVar23[iVar24 + iVar4 + -1] == 0)" ( (binary_expression "pmVar23[iVar24 + iVar4 + -1] == 0" (subscript_expression "pmVar23[iVar24 + iVar4 + -1]" identifier [ (binary_expression "iVar24 + iVar4 + -1" (binary_expression "iVar24 + iVar4" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar22 < iVar19) {\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }\n        else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }" if (parenthesized_expression "(iVar22 < iVar19)" ( (binary_expression "iVar22 < iVar19" identifier < identifier) )) (compound_statement "{\n          if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar1 = iVar22 < iVar19;\n          if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar4 = 0;\n          iVar22 = iVar19;\n        }" { (if_statement "if (iVar22 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);\n            if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }\n            pmVar13 = pmVar23 + iVar22;\n            pmVar7 = up + iVar22;\n            while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" { (expression_statement "iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22);" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(up,pmVar23,up,iVar22)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(up,pmVar23,up,iVar22)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar1 = iVar22 < iVar19;\n              goto LAB_0004fa3c;\n            }" { (if_statement "if (up == pmVar23) {\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(up == pmVar23)" ( (binary_expression "up == pmVar23" identifier == identifier) )) (compound_statement "{\n                uVar26 = CONCAT44(iVar19,iVar19 * 4);\n                iVar4 = 0;\n                goto LAB_0004f6ec;\n              }" { (expression_statement "uVar26 = CONCAT44(iVar19,iVar19 * 4);" (assignment_expression "uVar26 = CONCAT44(iVar19,iVar19 * 4)" identifier = (call_expression "CONCAT44(iVar19,iVar19 * 4)" identifier (argument_list "(iVar19,iVar19 * 4)" ( identifier , (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "bVar1 = iVar22 < iVar19;" (assignment_expression "bVar1 = iVar22 < iVar19" identifier = (binary_expression "iVar22 < iVar19" identifier < identifier)) ;) (goto_statement "goto LAB_0004fa3c;" goto statement_identifier ;) })) (expression_statement "pmVar13 = pmVar23 + iVar22;" (assignment_expression "pmVar13 = pmVar23 + iVar22" identifier = (binary_expression "pmVar23 + iVar22" identifier + identifier)) ;) (expression_statement "pmVar7 = up + iVar22;" (assignment_expression "pmVar7 = up + iVar22" identifier = (binary_expression "up + iVar22" identifier + identifier)) ;) (while_statement "while( true ) {\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar24 = iVar22;\n              mVar21 = *pmVar13;\n              iVar22 = iVar24 + 1;\n              *pmVar7 = mVar21 + 1;\n              if (mVar21 + 1 != 0) break;\n              pmVar13 = pmVar13 + 1;\n              pmVar7 = pmVar7 + 1;\n              if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" { (expression_statement "iVar24 = iVar22;" (assignment_expression "iVar24 = iVar22" identifier = identifier) ;) (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;) (expression_statement "iVar22 = iVar24 + 1;" (assignment_expression "iVar22 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar7 = mVar21 + 1;" (assignment_expression "*pmVar7 = mVar21 + 1" (pointer_expression "*pmVar7" * identifier) = (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 "pmVar13 = pmVar13 + 1;" (assignment_expression "pmVar13 = pmVar13 + 1" identifier = (binary_expression "pmVar13 + 1" identifier + number_literal)) ;) (expression_statement "pmVar7 = pmVar7 + 1;" (assignment_expression "pmVar7 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar19 == iVar22) {\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar19 == iVar22)" ( (binary_expression "iVar19 == iVar22" identifier == identifier) )) (compound_statement "{\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);\n                goto LAB_0004f6ec;\n              }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4);" (assignment_expression "uVar26 = CONCAT44(iVar24 + 2,iVar19 * 4)" identifier = (call_expression "CONCAT44(iVar24 + 2,iVar19 * 4)" identifier (argument_list "(iVar24 + 2,iVar19 * 4)" ( (binary_expression "iVar24 + 2" identifier + number_literal) , (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) })) })) (expression_statement "bVar1 = iVar22 < iVar19;" (assignment_expression "bVar1 = iVar22 < iVar19" identifier = (binary_expression "iVar22 < iVar19" identifier < identifier)) ;) (if_statement "if ((up != pmVar23) && (bVar1)) {\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }" if (parenthesized_expression "((up != pmVar23) && (bVar1))" ( (binary_expression "(up != pmVar23) && (bVar1)" (parenthesized_expression "(up != pmVar23)" ( (binary_expression "up != pmVar23" identifier != identifier) )) && (parenthesized_expression "(bVar1)" ( identifier ))) )) (compound_statement "{\nLAB_0004fa3c:\n            iVar4 = 4;\n            if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);\n            iVar4 = 0;\n            uVar26 = CONCAT44(iVar19,iVar19 * 4);\n            goto LAB_0004f6ec;\n          }" { (labeled_statement "LAB_0004fa3c:\n            iVar4 = 4;" statement_identifier : (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;)) (if_statement "if (bVar1) {\n              iVar4 = (iVar19 - iVar22) * 4;\n            }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n              iVar4 = (iVar19 - iVar22) * 4;\n            }" { (expression_statement "iVar4 = (iVar19 - iVar22) * 4;" (assignment_expression "iVar4 = (iVar19 - iVar22) * 4" identifier = (binary_expression "(iVar19 - iVar22) * 4" (parenthesized_expression "(iVar19 - iVar22)" ( (binary_expression "iVar19 - iVar22" identifier - identifier) )) * number_literal)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4);" (call_expression "(*(code *)PTR_memcpy_0009d544)(up + iVar22,pmVar23 + iVar22,iVar4)" (parenthesized_expression "(*(code *)PTR_memcpy_0009d544)" ( (pointer_expression "*(code *)PTR_memcpy_0009d544" * (cast_expression "(code *)PTR_memcpy_0009d544" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(up + iVar22,pmVar23 + iVar22,iVar4)" ( (binary_expression "up + iVar22" identifier + identifier) , (binary_expression "pmVar23 + iVar22" identifier + identifier) , identifier ))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = CONCAT44(iVar19,iVar19 * 4);" (assignment_expression "uVar26 = CONCAT44(iVar19,iVar19 * 4)" identifier = (call_expression "CONCAT44(iVar19,iVar19 * 4)" identifier (argument_list "(iVar19,iVar19 * 4)" ( identifier , (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = iVar19;" (assignment_expression "iVar22 = iVar19" identifier = identifier) ;) }) (else_clause "else {\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }" else (compound_statement "{\n          if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar4 = 0;\n        }" { (if_statement "if (iVar19 != 0) {\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);\n            if (iVar4 == 0) goto LAB_0004f6e8;\n            iVar4 = iVar19 + 1;\n            uVar26 = CONCAT44(iVar4,iVar19 * 4);\n            pmVar7 = up + iVar19;\n            if (iVar22 == iVar19) goto LAB_0004fc80;\n            mVar21 = *pmVar7;\n            *pmVar7 = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" { (expression_statement "iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19);" (assignment_expression "iVar4 = (*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(up,up,pmVar23,iVar19)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(up,up,pmVar23,iVar19)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) goto LAB_0004f6e8;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f6e8;" goto statement_identifier ;)) (expression_statement "iVar4 = iVar19 + 1;" (assignment_expression "iVar4 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar26 = CONCAT44(iVar4,iVar19 * 4);" (assignment_expression "uVar26 = CONCAT44(iVar4,iVar19 * 4)" identifier = (call_expression "CONCAT44(iVar4,iVar19 * 4)" identifier (argument_list "(iVar4,iVar19 * 4)" ( identifier , (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (expression_statement "pmVar7 = up + iVar19;" (assignment_expression "pmVar7 = up + iVar19" identifier = (binary_expression "up + iVar19" identifier + identifier)) ;) (if_statement "if (iVar22 == iVar19) goto LAB_0004fc80;" if (parenthesized_expression "(iVar22 == iVar19)" ( (binary_expression "iVar22 == iVar19" identifier == identifier) )) (goto_statement "goto LAB_0004fc80;" goto statement_identifier ;)) (expression_statement "mVar21 = *pmVar7;" (assignment_expression "mVar21 = *pmVar7" identifier = (pointer_expression "*pmVar7" * identifier)) ;) (expression_statement "*pmVar7 = mVar21 + 1;" (assignment_expression "*pmVar7 = mVar21 + 1" (pointer_expression "*pmVar7" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n              if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\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 (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar19 = iVar19 + 2;\n              mVar21 = up[iVar4] + 1;\n              up[iVar4] = mVar21;\n              if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" { (if_statement "if (iVar22 <= iVar4) {\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar22 <= iVar4)" ( (binary_expression "iVar22 <= iVar4" identifier <= identifier) )) (compound_statement "{\nLAB_0004f9ec:\n                iVar4 = 1;\n                uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" { (labeled_statement "LAB_0004f9ec:\n                iVar4 = 1;" statement_identifier : (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;)) (expression_statement "uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4);" (assignment_expression "uVar26 = CONCAT44(iVar22 + 1,iVar22 * 4)" identifier = (call_expression "CONCAT44(iVar22 + 1,iVar22 * 4)" identifier (argument_list "(iVar22 + 1,iVar22 * 4)" ( (binary_expression "iVar22 + 1" identifier + number_literal) , (binary_expression "iVar22 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar19 = iVar19 + 2;" (assignment_expression "iVar19 = iVar19 + 2" identifier = (binary_expression "iVar19 + 2" identifier + number_literal)) ;) (expression_statement "mVar21 = up[iVar4] + 1;" (assignment_expression "mVar21 = up[iVar4] + 1" identifier = (binary_expression "up[iVar4] + 1" (subscript_expression "up[iVar4]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "up[iVar4] = mVar21;" (assignment_expression "up[iVar4] = mVar21" (subscript_expression "up[iVar4]" identifier [ identifier ]) = identifier) ;) (if_statement "if (mVar21 == 0) {\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" { (do_statement "do {\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                } while (mVar21 + 1 == 0);" do (compound_statement "{\n                  if (iVar22 == iVar19) goto LAB_0004f9ec;\n                  mVar21 = pmVar7[2];\n                  iVar19 = iVar19 + 1;\n                  pmVar7[2] = mVar21 + 1;\n                  iVar4 = 0;\n                  pmVar7 = pmVar7 + 1;\n                }" { (if_statement "if (iVar22 == iVar19) goto LAB_0004f9ec;" if (parenthesized_expression "(iVar22 == iVar19)" ( (binary_expression "iVar22 == iVar19" identifier == identifier) )) (goto_statement "goto LAB_0004f9ec;" goto statement_identifier ;)) (expression_statement "mVar21 = pmVar7[2];" (assignment_expression "mVar21 = pmVar7[2]" identifier = (subscript_expression "pmVar7[2]" identifier [ number_literal ])) ;) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "pmVar7[2] = mVar21 + 1;" (assignment_expression "pmVar7[2] = mVar21 + 1" (subscript_expression "pmVar7[2]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "pmVar7 = pmVar7 + 1;" (assignment_expression "pmVar7 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 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_0004f6e8;" goto statement_identifier ;) })) })) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004f6e8:\n        uVar26 = CONCAT44(iVar22,iVar22 << 2);" statement_identifier : (expression_statement "uVar26 = CONCAT44(iVar22,iVar22 << 2);" (assignment_expression "uVar26 = CONCAT44(iVar22,iVar22 << 2)" identifier = (call_expression "CONCAT44(iVar22,iVar22 << 2)" identifier (argument_list "(iVar22,iVar22 << 2)" ( identifier , (binary_expression "iVar22 << 2" identifier << number_literal) )))) ;)) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (labeled_statement "LAB_0004f480:\n      iVar22 = iVar4 + -1;" statement_identifier : (expression_statement "iVar22 = iVar4 + -1;" (assignment_expression "iVar22 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;)) (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;) (expression_statement "pmVar14 = up;" (assignment_expression "pmVar14 = up" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);\n        local_8c = up + iVar4 + -1;\n      }" { (do_statement "do {\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          pmVar13 = pmVar13 + 1;\n          *pmVar14 = mVar21;\n          iVar22 = iVar22 + -1;\n          mVar21 = *pmVar13;\n          pmVar14 = pmVar14 + 1;\n        }" { (expression_statement "pmVar13 = pmVar13 + 1;" (assignment_expression "pmVar13 = pmVar13 + 1" identifier = (binary_expression "pmVar13 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar14 = mVar21;" (assignment_expression "*pmVar14 = mVar21" (pointer_expression "*pmVar14" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *pmVar13;" (assignment_expression "mVar21 = *pmVar13" identifier = (pointer_expression "*pmVar13" * identifier)) ;) (expression_statement "pmVar14 = pmVar14 + 1;" (assignment_expression "pmVar14 = pmVar14 + 1" identifier = (binary_expression "pmVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = up + iVar4 + -1;" (assignment_expression "local_8c = up + iVar4 + -1" identifier = (binary_expression "up + iVar4 + -1" (binary_expression "up + iVar4" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar19 = -iVar4;" (assignment_expression "iVar19 = -iVar4" identifier = (unary_expression "-iVar4" - identifier)) ;) (expression_statement "*local_8c = mVar21;" (assignment_expression "*local_8c = mVar21" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (labeled_statement "LAB_0004f338:\n    *usizep = iVar19;" statement_identifier : (expression_statement "*usizep = iVar19;" (assignment_expression "*usizep = iVar19" (pointer_expression "*usizep" * identifier) = identifier) ;)) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) }))) (expression_statement "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14;" (assignment_expression "*(mp_limb_t **)(puVar25 + 0x18) = pmVar14" (pointer_expression "*(mp_limb_t **)(puVar25 + 0x18)" * (cast_expression "(mp_limb_t **)(puVar25 + 0x18)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x18)" ( (binary_expression "puVar25 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar25 + 0x14) = uVar17;" (assignment_expression "*(uint *)(puVar25 + 0x14) = uVar17" (pointer_expression "*(uint *)(puVar25 + 0x14)" * (cast_expression "(uint *)(puVar25 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + 0x14)" ( (binary_expression "puVar25 + 0x14" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0004f4dc;" goto statement_identifier ;) })))
(translation_unit "uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)\n\n{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}\n\n" (function_definition "uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)\n\n{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" type_identifier (function_declarator "__gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" ( (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 "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int unaff_s4;" primitive_type identifier ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined8 uVar25;" type_identifier identifier ;) (declaration "undefined1 auStack_c8 [32];" type_identifier (array_declarator "auStack_c8 [32]" identifier [ number_literal ]) ;) (declaration "int *local_90;" primitive_type (pointer_declarator "*local_90" * identifier) ;) (declaration "int *local_8c;" primitive_type (pointer_declarator "*local_8c" * identifier) ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "int *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined1 auStack_44 [4];" type_identifier (array_declarator "auStack_44 [4]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar24 = auStack_c8;" (assignment_expression "puVar24 = auStack_c8" identifier = identifier) ;) (expression_statement "uVar16 = param_7 * 4 + 3;" (assignment_expression "uVar16 = param_7 * 4 + 3" identifier = (binary_expression "param_7 * 4 + 3" (binary_expression "param_7 * 4" identifier * number_literal) + number_literal)) ;) (expression_statement "uVar5 = (param_5 - param_7) + 1;" (assignment_expression "uVar5 = (param_5 - param_7) + 1" identifier = (binary_expression "(param_5 - param_7) + 1" (parenthesized_expression "(param_5 - param_7)" ( (binary_expression "param_5 - param_7" identifier - identifier) )) + number_literal)) ;) (if_statement "if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }" if (parenthesized_expression "((int)uVar16 <= (int)uVar5)" ( (binary_expression "(int)uVar16 <= (int)uVar5" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar16 = uVar5;\n  }" { (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" identifier = identifier) ;) })) (expression_statement "iVar22 = param_7 + 1;" (assignment_expression "iVar22 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar5 = uVar16 << 2;" (assignment_expression "uVar5 = uVar16 << 2" identifier = (binary_expression "uVar16 << 2" identifier << number_literal)) ;) (expression_statement "iVar18 = (int)param_7 >> 1;" (assignment_expression "iVar18 = (int)param_7 >> 1" identifier = (binary_expression "(int)param_7 >> 1" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" if (parenthesized_expression "(599 < (int)param_7)" ( (binary_expression "599 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" { (expression_statement "iVar6 = (int)param_7 / 3;" (assignment_expression "iVar6 = (int)param_7 / 3" identifier = (binary_expression "(int)param_7 / 3" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) / number_literal)) ;) (expression_statement "iVar20 = iVar6;" (assignment_expression "iVar20 = iVar6" identifier = identifier) ;) (if_statement "if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }" if (parenthesized_expression "(iVar18 <= iVar6)" ( (binary_expression "iVar18 <= iVar6" identifier <= identifier) )) (compound_statement "{\n      iVar20 = iVar18;\n    }" { (expression_statement "iVar20 = iVar18;" (assignment_expression "iVar20 = iVar18" identifier = identifier) ;) })) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) (if_statement "if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }" if (parenthesized_expression "(iVar18 < iVar6)" ( (binary_expression "iVar18 < iVar6" identifier < identifier) )) (compound_statement "{\n      iVar17 = iVar6;\n    }" { (expression_statement "iVar17 = iVar6;" (assignment_expression "iVar17 = iVar6" identifier = identifier) ;) })) (expression_statement "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)()" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)()" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = param_7 + iVar17 + -1;" (assignment_expression "iVar17 = param_7 + iVar17 + -1" identifier = (binary_expression "param_7 + iVar17 + -1" (binary_expression "param_7 + iVar17" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }" if (parenthesized_expression "(iVar6 <= iVar17)" ( (binary_expression "iVar6 <= iVar17" identifier <= identifier) )) (compound_statement "{\n      iVar6 = iVar17;\n    }" { (expression_statement "iVar6 = iVar17;" (assignment_expression "iVar6 = iVar17" identifier = identifier) ;) })) (expression_statement "uVar5 = 0x106b;" (assignment_expression "uVar5 = 0x106b" identifier = number_literal) ;) (if_statement "if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }" if (parenthesized_expression "(0x106a < (int)uVar16)" ( (binary_expression "0x106a < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar5 = uVar16;\n    }" { (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) })) (expression_statement "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;" (assignment_expression "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" identifier = (binary_expression "((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" (parenthesized_expression "((int)((param_7 - iVar20) + 1) / 2 + 1)" ( (binary_expression "(int)((param_7 - iVar20) + 1) / 2 + 1" (binary_expression "(int)((param_7 - iVar20) + 1) / 2" (cast_expression "(int)((param_7 - iVar20) + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((param_7 - iVar20) + 1)" ( (binary_expression "(param_7 - iVar20) + 1" (parenthesized_expression "(param_7 - iVar20)" ( (binary_expression "param_7 - iVar20" identifier - identifier) )) + number_literal) ))) / number_literal) + number_literal) )) * number_literal)) ;) (expression_statement "uVar16 = iVar6 + unaff_s4;" (assignment_expression "uVar16 = iVar6 + unaff_s4" identifier = (binary_expression "iVar6 + unaff_s4" identifier + identifier)) ;) (if_statement "if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }" if (parenthesized_expression "(iVar6 + unaff_s4 < (int)uVar5)" ( (binary_expression "iVar6 + unaff_s4 < (int)uVar5" (binary_expression "iVar6 + unaff_s4" identifier + identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar16 = uVar5;\n    }" { (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar16 = iVar22 * 2 + uVar16;" (assignment_expression "uVar16 = iVar22 * 2 + uVar16" identifier = (binary_expression "iVar22 * 2 + uVar16" (binary_expression "iVar22 * 2" identifier * number_literal) + identifier)) ;) (expression_statement "uVar5 = uVar16 * 4;" (assignment_expression "uVar5 = uVar16 * 4" identifier = (binary_expression "uVar16 * 4" identifier * number_literal)) ;) })) (if_statement "if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" if (parenthesized_expression "(uVar5 < 0x7f01)" ( (binary_expression "uVar5 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }" { (expression_statement "iVar6 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar5 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" ( (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar24 = auStack_c8 + iVar6;" (assignment_expression "puVar24 = auStack_c8 + iVar6" identifier = (binary_expression "auStack_c8 + iVar6" identifier + identifier)) ;) (expression_statement "piVar14 = (int *)(&stack0xffffff58 + iVar6);" (assignment_expression "piVar14 = (int *)(&stack0xffffff58 + iVar6)" identifier = (cast_expression "(int *)(&stack0xffffff58 + iVar6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffff58 + iVar6)" ( (binary_expression "&stack0xffffff58 + iVar6" (pointer_expression "&stack0xffffff58" & identifier) + identifier) )))) ;) }) (else_clause "else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" else (compound_statement "{\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" { (expression_statement "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);" (assignment_expression "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_6c)" ( (pointer_expression "&local_6c" & identifier) ))))) ;) }))) (expression_statement "local_90 = param_1;" (assignment_expression "local_90 = param_1" identifier = identifier) ;) (expression_statement "local_8c = param_2;" (assignment_expression "local_8c = param_2" identifier = identifier) ;) (if_statement "if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "((int)param_7 < param_5)" ( (binary_expression "(int)param_7 < param_5" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (compound_statement "{\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "*(uint *)(puVar24 + 0x18) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x18) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x18)" * (cast_expression "(uint *)(puVar24 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x14) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x14) = param_6" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = param_5;" (assignment_expression "*(int *)(puVar24 + 0x10) = param_5" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);" (call_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)" ( (pointer_expression "*(code *)PTR___gmpn_tdiv_qr_0009d614" * (cast_expression "(code *)PTR___gmpn_tdiv_qr_0009d614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,param_4,0,param_4)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar9 = param_4 + param_7;" (assignment_expression "piVar9 = param_4 + param_7" identifier = (binary_expression "param_4 + param_7" identifier + identifier)) ;) (expression_statement "uVar5 = param_7;" (assignment_expression "uVar5 = param_7" identifier = identifier) ;) (do_statement "do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);" do (compound_statement "{\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if (piVar9[-1] != 0) goto LAB_0004eb40;" if (parenthesized_expression "(piVar9[-1] != 0)" ( (binary_expression "piVar9[-1] != 0" (subscript_expression "piVar9[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_0004eb40;" goto statement_identifier ;)) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" identifier = (binary_expression "piVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) ;) (if_statement "if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" { (expression_statement "iVar22 = param_7 - 1;" (assignment_expression "iVar22 = param_7 - 1" identifier = (binary_expression "param_7 - 1" identifier - number_literal)) ;) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar14 = param_1;" (assignment_expression "piVar14 = param_1" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" { (do_statement "do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        }" { (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar18;" (assignment_expression "*piVar14 = iVar18" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_90 = param_1 + (param_7 - 1);" (assignment_expression "local_90 = param_1 + (param_7 - 1)" identifier = (binary_expression "param_1 + (param_7 - 1)" identifier + (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) })) (labeled_statement "LAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" statement_identifier : (if_statement "if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" if (parenthesized_expression "(599 < (int)param_7)" ( (binary_expression "599 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" { (if_statement "if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" { (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8)" (parenthesized_expression "(*(code *)PTR_memset_0009d2e8)" ( (pointer_expression "*(code *)PTR_memset_0009d2e8" * (cast_expression "(code *)PTR_memset_0009d2e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,0,iVar22 * 8)" ( identifier , number_literal , (binary_expression "iVar22 * 8" identifier * number_literal) ))) ;) })) (expression_statement "piVar23 = piVar14 + iVar22;" (assignment_expression "piVar23 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" identifier = identifier) ;) (expression_statement "local_5c = param_2;" (assignment_expression "local_5c = param_2" identifier = identifier) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,param_7 - iVar18,piVar9)" ( identifier , (binary_expression "param_7 - iVar18" identifier - identifier) , identifier ))) ;) (expression_statement "piVar13 = piVar9 + unaff_s4;" (assignment_expression "piVar13 = piVar9 + unaff_s4" identifier = (binary_expression "piVar9 + unaff_s4" identifier + identifier)) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" ( (binary_expression "param_4 + iVar18" identifier + identifier) , (binary_expression "param_6 + iVar18" identifier + identifier) , (binary_expression "param_7 - iVar18" identifier - identifier) , identifier )))) ;) (if_statement "if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }" { (expression_statement "*piVar23 = 1;" (assignment_expression "*piVar23 = 1" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_48 = piVar9 + param_7;" (assignment_expression "local_48 = piVar9 + param_7" identifier = (binary_expression "piVar9 + param_7" identifier + identifier)) ;) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" * (cast_expression "(int ***)(puVar24 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" identifier = identifier) ;) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" identifier = identifier) ;) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" * (cast_expression "(undefined **)(puVar24 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_6,param_7,0)" ( identifier , identifier , identifier , number_literal )))) ;) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" identifier = identifier) ;) (if_statement "if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" { (labeled_statement "LAB_0004f0cc:\n        param_7 = local_60;" statement_identifier : (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" identifier = identifier) ;)) (if_statement "if (local_6c == 0) goto LAB_0004f0dc;" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" identifier = identifier) ;) (goto_statement "goto LAB_0004f0dc;" goto statement_identifier ;) })) }) (else_clause "else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" else (compound_statement "{\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar18 + iVar22,param_4,param_6)" ( identifier , (binary_expression "iVar18 + iVar22" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "piVar8 = local_30;" (assignment_expression "piVar8 = local_30" identifier = identifier) ;) (expression_statement "iVar22 = local_40;" (assignment_expression "iVar22 = local_40" identifier = identifier) ;) (if_statement "if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" { (expression_statement "iVar6 = local_40 + -1;" (assignment_expression "iVar6 = local_40 + -1" identifier = (binary_expression "local_40 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *local_34;" (assignment_expression "iVar20 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "iVar18 = iVar6;" (assignment_expression "iVar18 = iVar6" identifier = identifier) ;) (expression_statement "piVar7 = piVar14;" (assignment_expression "piVar7 = piVar14" identifier = identifier) ;) (expression_statement "piVar10 = local_34;" (assignment_expression "piVar10 = local_34" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }" { (expression_statement "*piVar14 = iVar20;" (assignment_expression "*piVar14 = iVar20" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "*piVar23 = *piVar8;" (assignment_expression "*piVar23 = *piVar8" (pointer_expression "*piVar23" * identifier) = (pointer_expression "*piVar8" * identifier)) ;) }) (else_clause "else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" else (compound_statement "{\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" { (do_statement "do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);" do (compound_statement "{\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          }" { (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = piVar10[1];" (assignment_expression "iVar20 = piVar10[1]" identifier = (subscript_expression "piVar10[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" identifier = (binary_expression "piVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "piVar14[iVar22 + -1] = iVar20;" (assignment_expression "piVar14[iVar22 + -1] = iVar20" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar23;" (assignment_expression "piVar7 = piVar23" identifier = identifier) ;) (do_statement "do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);" do (compound_statement "{\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          }" { (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar23[iVar22 + -1] = iVar18;" (assignment_expression "piVar23[iVar22 + -1] = iVar18" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) = identifier) ;) }))) })) (if_statement "if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" if (parenthesized_expression "(piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0)" ( (binary_expression "piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0" (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) && (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" { (expression_statement "piVar7 = piVar14 + iVar22 + -2;" (assignment_expression "piVar7 = piVar14 + iVar22 + -2" identifier = (binary_expression "piVar14 + iVar22 + -2" (binary_expression "piVar14 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "piVar8 = piVar23 + iVar22 + -2;" (assignment_expression "piVar8 = piVar23 + iVar22 + -2" identifier = (binary_expression "piVar23 + iVar22 + -2" (binary_expression "piVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);" do (compound_statement "{\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        }" { (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" ( (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" identifier == number_literal) && (binary_expression "iVar6 == 0" identifier == number_literal)) )) ;) })) }))) (if_statement "if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" if (parenthesized_expression "(599 < (int)uVar16)" ( (binary_expression "599 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" { (do_statement "do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);" do (compound_statement "{\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      }" { (while_statement "while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" { (expression_statement "uVar5 = uVar16 / 3;" (assignment_expression "uVar5 = uVar16 / 3" identifier = (binary_expression "uVar16 / 3" identifier / number_literal)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar16 - uVar5,piVar9)" ( identifier , (binary_expression "uVar16 - uVar5" identifier - identifier) , identifier ))) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" * (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" ( (binary_expression "param_4 + uVar5" identifier + identifier) , (binary_expression "param_6 + uVar5" identifier + identifier) , (binary_expression "uVar16 - uVar5" identifier - identifier) , identifier )))) ;) (if_statement "if (iVar18 < 1) break;" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" * (cast_expression "(int **)(puVar24 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar5 + iVar18,param_4,param_6)" ( identifier , (binary_expression "uVar5 + iVar18" identifier + identifier) , identifier , identifier )))) ;) (expression_statement "uVar4 = local_3c;" (assignment_expression "uVar4 = local_3c" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" { (expression_statement "iVar6 = iVar22 + -1;" (assignment_expression "iVar6 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" identifier = identifier) ;) (expression_statement "piVar8 = piVar14;" (assignment_expression "piVar8 = piVar14" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" { (do_statement "do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);" do (compound_statement "{\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              }" { (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = piVar8[1];" (assignment_expression "iVar20 = piVar8[1]" identifier = (subscript_expression "piVar8[1]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "piVar7 = piVar13 + iVar22 + 0x3fffffff;" (assignment_expression "piVar7 = piVar13 + iVar22 + 0x3fffffff" identifier = (binary_expression "piVar13 + iVar22 + 0x3fffffff" (binary_expression "piVar13 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" * identifier) = identifier) ;) })) (expression_statement "piVar8 = piVar13 + iVar22;" (assignment_expression "piVar8 = piVar13 + iVar22" identifier = (binary_expression "piVar13 + iVar22" identifier + identifier)) ;) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" if (parenthesized_expression "(local_40 < iVar22)" ( (binary_expression "local_40 < iVar22" identifier < identifier) )) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar13,iVar22,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar23,iVar22,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" else (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,uVar4,iVar18,piVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar7,iVar18,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar14,piVar14,piVar8,iVar22 + local_40)" ( identifier , identifier , identifier , (binary_expression "iVar22 + local_40" identifier + identifier) )))) ;) (expression_statement "piVar7 = local_30;" (assignment_expression "piVar7 = local_30" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" if (parenthesized_expression "(local_40 < iVar22)" ( (binary_expression "local_40 < iVar22" identifier < identifier) )) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar23,iVar22,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar13,iVar22,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" else (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar8,piVar7,iVar18,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" identifier = identifier) ;) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" identifier = identifier) ;) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,uVar4,iVar18,piVar13)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar23,piVar8,iVar22 + local_40)" ( identifier , identifier , identifier , (binary_expression "iVar22 + local_40" identifier + identifier) )))) ;) (expression_statement "iVar22 = iVar22 + local_40;" (assignment_expression "iVar22 = iVar22 + local_40" identifier = (binary_expression "iVar22 + local_40" identifier + identifier)) ;) (if_statement "if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" if (parenthesized_expression "(iVar6 == 0 && iVar18 == 0)" ( (binary_expression "iVar6 == 0 && iVar18 == 0" (binary_expression "iVar6 == 0" identifier == number_literal) && (binary_expression "iVar18 == 0" identifier == number_literal)) )) (compound_statement "{\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }" { (if_statement "if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" if (parenthesized_expression "(piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0)" ( (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0" (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar14[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal) && (binary_expression "piVar23[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar23[iVar22 + 0x3fffffff]" identifier [ (binary_expression "iVar22 + 0x3fffffff" identifier + number_literal) ]) == number_literal)) )) (compound_statement "{\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" { (expression_statement "piVar7 = piVar14 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar7 = piVar14 + iVar22 + 0x3ffffffe" identifier = (binary_expression "piVar14 + iVar22 + 0x3ffffffe" (binary_expression "piVar14 + iVar22" identifier + identifier) + number_literal)) ;) (expression_statement "piVar8 = piVar23 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar8 = piVar23 + iVar22 + 0x3ffffffe" identifier = (binary_expression "piVar23 + iVar22 + 0x3ffffffe" (binary_expression "piVar23 + iVar22" identifier + identifier) + number_literal)) ;) (do_statement "do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);" do (compound_statement "{\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              }" { (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" ( (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" identifier == number_literal) && (binary_expression "iVar6 == 0" identifier == number_literal)) )) ;) })) }) (else_clause "else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" else (compound_statement "{\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" { (expression_statement "piVar14[iVar22] = iVar6;" (assignment_expression "piVar14[iVar22] = iVar6" (subscript_expression "piVar14[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar23[iVar22] = iVar18;" (assignment_expression "piVar23[iVar22] = iVar18" (subscript_expression "piVar23[iVar22]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) }))) (if_statement "if ((int)uVar16 < 600) goto LAB_0004ef08;" if (parenthesized_expression "((int)uVar16 < 600)" ( (binary_expression "(int)uVar16 < 600" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004ef08;" goto statement_identifier ;)) })) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" * (cast_expression "(undefined **)(puVar24 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_54 = iVar22;" (assignment_expression "local_54 = iVar22" identifier = identifier) ;) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" identifier = identifier) ;) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" identifier = identifier) ;) (expression_statement "local_48 = piVar9 + uVar16;" (assignment_expression "local_48 = piVar9 + uVar16" identifier = (binary_expression "piVar9 + uVar16" identifier + identifier)) ;) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" * (cast_expression "(int ***)(puVar24 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4,param_6,uVar16,0)" ( identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (uVar16 == 0) goto LAB_0004f0cc;" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f0cc;" goto statement_identifier ;)) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" identifier = identifier) ;) }) while (parenthesized_expression "(599 < (int)uVar16)" ( (binary_expression "599 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_0004ef08:\n    piVar13 = param_4 + uVar16;" statement_identifier : (expression_statement "piVar13 = param_4 + uVar16;" (assignment_expression "piVar13 = param_4 + uVar16" identifier = (binary_expression "param_4 + uVar16" identifier + identifier)) ;)) (expression_statement "piVar8 = param_6 + uVar16;" (assignment_expression "piVar8 = param_6 + uVar16" identifier = (binary_expression "param_6 + uVar16" identifier + identifier)) ;) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" identifier = identifier) ;) (expression_statement "piVar10 = piVar8;" (assignment_expression "piVar10 = piVar8" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) (if_statement "if ((int)uVar5 < 0) break;" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar12 = piVar7 + -1;" (assignment_expression "piVar12 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (if_statement "if (*piVar12 != *piVar10) goto LAB_0004f274;" if (parenthesized_expression "(*piVar12 != *piVar10)" ( (binary_expression "*piVar12 != *piVar10" (pointer_expression "*piVar12" * identifier) != (pointer_expression "*piVar10" * identifier)) )) (goto_statement "goto LAB_0004f274;" goto statement_identifier ;)) })) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" { (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (if_statement "if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (compound_statement "{\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" { (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) (expression_statement "piVar8 = param_4 + 1;" (assignment_expression "piVar8 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (do_statement "do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);" do (compound_statement "{\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        }" { (expression_statement "*piVar9 = iVar18;" (assignment_expression "*piVar9 = iVar18" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "piVar7 = piVar8 + 1;" (assignment_expression "piVar7 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) }) while (parenthesized_expression "(piVar7 != piVar13)" ( (binary_expression "piVar7 != piVar13" identifier != identifier) )) ;) (expression_statement "local_90 = param_1 + (uVar16 - 1);" (assignment_expression "local_90 = param_1 + (uVar16 - 1)" identifier = (binary_expression "param_1 + (uVar16 - 1)" identifier + (parenthesized_expression "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" * identifier) = identifier) ;) })) (expression_statement "piVar13 = piVar14 + iVar22;" (assignment_expression "piVar13 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (expression_statement "puVar21 = (uint *)(piVar23 + iVar22);" (assignment_expression "puVar21 = (uint *)(piVar23 + iVar22)" identifier = (cast_expression "(uint *)(piVar23 + iVar22)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + iVar22)" ( (binary_expression "piVar23 + iVar22" identifier + identifier) )))) ;) (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" identifier = identifier) ;) (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" identifier = identifier) ;) (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" identifier = identifier) ;) (do_statement "do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);" do (compound_statement "{\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    }" { (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar18 < 0) goto LAB_0004efd4;" if (parenthesized_expression "(iVar18 < 0)" ( (binary_expression "iVar18 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (expression_statement "puVar1 = (uint *)(piVar9 + -1);" (assignment_expression "puVar1 = (uint *)(piVar9 + -1)" identifier = (cast_expression "(uint *)(piVar9 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9 + -1)" ( (binary_expression "piVar9 + -1" identifier + number_literal) )))) ;) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" identifier = (binary_expression "piVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 == *puVar19)" ( (binary_expression "*puVar1 == *puVar19" (pointer_expression "*puVar1" * identifier) == (pointer_expression "*puVar19" * identifier)) )) ;) (if_statement "if (*puVar19 < *puVar1) goto LAB_0004efd4;" if (parenthesized_expression "(*puVar19 < *puVar1)" ( (binary_expression "*puVar19 < *puVar1" (pointer_expression "*puVar19" * identifier) < (pointer_expression "*puVar1" * identifier)) )) (goto_statement "goto LAB_0004efd4;" goto statement_identifier ;)) (if_statement "if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 != 0) goto LAB_0004fb70;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fb70;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" else (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" if (parenthesized_expression "(piVar13[-1] == 0)" ( (binary_expression "piVar13[-1] == 0" (subscript_expression "piVar13[-1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" { (do_statement "do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);" do (compound_statement "{\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        }" { (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" identifier = identifier) ;) (expression_statement "iVar22 = iVar18 + -1;" (assignment_expression "iVar22 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) goto LAB_0004f044;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;)) (expression_statement "piVar9 = piVar13 + -2;" (assignment_expression "piVar9 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar9 == 0)" ( (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" * identifier) == number_literal) )) ;) (expression_statement "iVar18 = iVar18 + -2;" (assignment_expression "iVar18 = iVar18 + -2" identifier = (binary_expression "iVar18 + -2" identifier + number_literal)) ;) })) (labeled_statement "LAB_0004fb70:\n      iVar6 = *piVar14;" statement_identifier : (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;)) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" { (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);" do (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" identifier = (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (goto_statement "goto LAB_0004f044;" goto statement_identifier ;) }))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar14;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar14" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x14) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x14) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;" statement_identifier : (expression_statement "*(int **)(puVar24 + 0x10) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x10) = param_6" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3,param_4)" ( identifier , identifier , identifier , identifier )))) ;) (labeled_statement "joined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" statement_identifier : (while_statement "while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" { (if_statement "if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;" statement_identifier : (if_statement "if (local_2c == *(int *)puVar3) break;" 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))) )) (break_statement "break;" break ;))) (expression_statement "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();" (assignment_expression "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_0004fc80:\n    iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (labeled_statement "LAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);" statement_identifier : (expression_statement "iVar22 = (int)((ulonglong)uVar25 >> 0x20);" (assignment_expression "iVar22 = (int)((ulonglong)uVar25 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar25 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar25 >> 0x20)" ( (binary_expression "(ulonglong)uVar25 >> 0x20" (cast_expression "(ulonglong)uVar25" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "*(int *)((int)local_8c + (int)uVar25) = iVar6;" (assignment_expression "*(int *)((int)local_8c + (int)uVar25) = iVar6" (pointer_expression "*(int *)((int)local_8c + (int)uVar25)" * (cast_expression "(int *)((int)local_8c + (int)uVar25)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_8c + (int)uVar25)" ( (binary_expression "(int)local_8c + (int)uVar25" (cast_expression "(int)local_8c" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (labeled_statement "LAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" statement_identifier : (if_statement "if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar22 = -iVar22;\n    }" { (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" identifier = (unary_expression "-iVar22" - identifier)) ;) }))) (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" * identifier) = identifier) ;) }))) (return_statement "return param_7;" return identifier ;) (labeled_statement "LAB_0004efd4:\n  uVar5 = puVar21[-1];" statement_identifier : (expression_statement "uVar5 = puVar21[-1];" (assignment_expression "uVar5 = puVar21[-1]" identifier = (subscript_expression "puVar21[-1]" identifier [ number_literal ])) ;)) (while_statement "while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" while (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = puVar21[-2];" (assignment_expression "uVar5 = puVar21[-2]" identifier = (subscript_expression "puVar21[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" identifier = (binary_expression "puVar21 + -1" identifier + number_literal)) ;) })) (if_statement "if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" { (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "piVar14 = param_2;" (assignment_expression "piVar14 = param_2" identifier = identifier) ;) (if_statement "if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" { (do_statement "do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);" do (compound_statement "{\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      }" { (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar6;" (assignment_expression "*piVar14 = iVar6" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" identifier = (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" identifier + identifier) + number_literal)) ;) })) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" * identifier) = identifier) ;) })) (labeled_statement "LAB_0004f044:\n  *param_3 = iVar22;" statement_identifier : (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" * identifier) = identifier) ;)) (expression_statement "param_7 = uVar16;" (assignment_expression "param_7 = uVar16" identifier = identifier) ;) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) (labeled_statement "LAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" statement_identifier : (if_statement "if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" if (parenthesized_expression "((*piVar14 != 0) || (iVar22 != 1))" ( (binary_expression "(*piVar14 != 0) || (iVar22 != 1)" (parenthesized_expression "(*piVar14 != 0)" ( (binary_expression "*piVar14 != 0" (pointer_expression "*piVar14" * identifier) != number_literal) )) || (parenthesized_expression "(iVar22 != 1)" ( (binary_expression "iVar22 != 1" identifier != number_literal) ))) )) (compound_statement "{\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" { (expression_statement "piVar7 = piVar9 + uVar16;" (assignment_expression "piVar7 = piVar9 + uVar16" identifier = (binary_expression "piVar9 + uVar16" identifier + identifier)) ;) (expression_statement "piVar10 = piVar7 + uVar16;" (assignment_expression "piVar10 = piVar7 + uVar16" identifier = (binary_expression "piVar7 + uVar16" identifier + identifier)) ;) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" { (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "iVar6 = *param_6;" (assignment_expression "iVar6 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (if_statement "if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (compound_statement "{\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }" { (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "*piVar10 = iVar6;" (assignment_expression "*piVar10 = iVar6" (pointer_expression "*piVar10" * identifier) = identifier) ;) }) (else_clause "else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" else (compound_statement "{\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" { (expression_statement "piVar12 = param_4 + 1;" (assignment_expression "piVar12 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar7;" (assignment_expression "piVar15 = piVar7" identifier = identifier) ;) (do_statement "do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);" do (compound_statement "{\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" { (expression_statement "*piVar15 = iVar18;" (assignment_expression "*piVar15 = iVar18" (pointer_expression "*piVar15" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar18 = *piVar12;" (assignment_expression "iVar18 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 != piVar13)" ( (binary_expression "piVar11 != piVar13" identifier != identifier) )) ;) (expression_statement "piVar10[-1] = iVar18;" (assignment_expression "piVar10[-1] = iVar18" (subscript_expression "piVar10[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = param_6 + 1;" (assignment_expression "piVar12 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) (do_statement "do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);" do (compound_statement "{\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" { (expression_statement "*piVar15 = iVar6;" (assignment_expression "*piVar15 = iVar6" (pointer_expression "*piVar15" * identifier) = identifier) ;) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = *piVar12;" (assignment_expression "iVar6 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar11 != piVar8)" ( (binary_expression "piVar11 != piVar8" identifier != identifier) )) ;) (expression_statement "piVar10[uVar16 - 1] = iVar6;" (assignment_expression "piVar10[uVar16 - 1] = iVar6" (subscript_expression "piVar10[uVar16 - 1]" identifier [ (binary_expression "uVar16 - 1" identifier - number_literal) ]) = identifier) ;) }))) })) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar24 + 0x18) = piVar10 + uVar16;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar10 + uVar16" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = (binary_expression "piVar10 + uVar16" identifier + identifier)) ;) (expression_statement "*(int **)(puVar24 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar24 + 0x10)" * (cast_expression "(int **)(puVar24 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" identifier = (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" ( (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" * (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,piVar9,&local_68,piVar7)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) , identifier )))) ;) (expression_statement "iVar18 = local_68;" (assignment_expression "iVar18 = local_68" identifier = identifier) ;) (expression_statement "iVar6 = iVar22;" (assignment_expression "iVar6 = iVar22" identifier = identifier) ;) (if_statement "if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }" { (if_statement "if (local_68 != 0) goto LAB_0004f508;" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;)) (if_statement "if (iVar22 != 0) goto LAB_0004f480;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004f480;" goto statement_identifier ;)) }) (else_clause "else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" else (compound_statement "{\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" { (if_statement "if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" if (parenthesized_expression "(piVar14[iVar22 + -1] == 0)" ( (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" { (expression_statement "piVar10 = piVar14 + iVar22;" (assignment_expression "piVar10 = piVar14 + iVar22" identifier = (binary_expression "piVar14 + iVar22" identifier + identifier)) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" { (if_statement "if (local_68 == 0) goto LAB_0004f338;" if (parenthesized_expression "(local_68 == 0)" ( (binary_expression "local_68 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f338;" goto statement_identifier ;)) (goto_statement "goto LAB_0004f508;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar10 + -2;" (assignment_expression "piVar12 = piVar10 + -2" identifier = (binary_expression "piVar10 + -2" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" identifier = (binary_expression "piVar10 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) })) (if_statement "if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" if (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" { (labeled_statement "LAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;" statement_identifier : (expression_statement "piVar10 = piVar7 + uVar16 + 1;" (assignment_expression "piVar10 = piVar7 + uVar16 + 1" identifier = (binary_expression "piVar7 + uVar16 + 1" (binary_expression "piVar7 + uVar16" identifier + identifier) + number_literal)) ;)) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" identifier = identifier) ;) (if_statement "if (local_68 < 0) {\n          iVar20 = -local_68;\n        }" if (parenthesized_expression "(local_68 < 0)" ( (binary_expression "local_68 < 0" identifier < number_literal) )) (compound_statement "{\n          iVar20 = -local_68;\n        }" { (expression_statement "iVar20 = -local_68;" (assignment_expression "iVar20 = -local_68" identifier = (unary_expression "-local_68" - identifier)) ;) })) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" identifier = identifier) ;) (if_statement "if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }" { (labeled_statement "LAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;" statement_identifier : (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar9,iVar20,param_4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" else (compound_statement "{\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" { (expression_statement "iVar17 = piVar13[-1];" (assignment_expression "iVar17 = piVar13[-1]" identifier = (subscript_expression "piVar13[-1]" identifier [ number_literal ])) ;) (while_statement "while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" while (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" { (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if (uVar5 == 0) goto LAB_0004f550;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "iVar17 = piVar13[-2];" (assignment_expression "iVar17 = piVar13[-2]" identifier = (subscript_expression "piVar13[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) })) (if_statement "if ((int)uVar5 < iVar20) goto LAB_0004f550;" if (parenthesized_expression "((int)uVar5 < iVar20)" ( (binary_expression "(int)uVar5 < iVar20" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) (goto_statement "goto LAB_0004f550;" goto statement_identifier ;)) (expression_statement "*(int *)(puVar24 + 0x10) = iVar20;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar20" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,param_4,uVar5,piVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar20 = iVar20 + uVar5;" (assignment_expression "iVar20 = iVar20 + uVar5" identifier = (binary_expression "iVar20 + uVar5" identifier + identifier)) ;) (if_statement "if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }" { (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" ( (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" ( (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" ( (comma_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar10,param_1,param_7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((int)param_7 < iVar20)" ( (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ))) )) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" { (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" identifier = (binary_expression "piVar10 + param_7" identifier + identifier)) ;) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar18 + 1;" (assignment_expression "*piVar13 = iVar18 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" if (parenthesized_expression "((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20))" ( (binary_expression "(iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 + 1 == 0)" ( (binary_expression "iVar18 + 1 == 0" (binary_expression "iVar18 + 1" identifier + number_literal) == number_literal) )) && (parenthesized_expression "((int)(param_7 + 1) < iVar20)" ( (binary_expression "(int)(param_7 + 1) < iVar20" (cast_expression "(int)(param_7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 + 1)" ( (binary_expression "param_7 + 1" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" { (expression_statement "iVar17 = piVar10[param_7 + 1] + 1;" (assignment_expression "iVar17 = piVar10[param_7 + 1] + 1" identifier = (binary_expression "piVar10[param_7 + 1] + 1" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) + number_literal)) ;) (expression_statement "piVar10[param_7 + 1] = iVar17;" (assignment_expression "piVar10[param_7 + 1] = iVar17" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) = identifier) ;) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" for ( (assignment_expression "iVar18 = param_7 + 2" identifier = (binary_expression "param_7 + 2" identifier + number_literal)) ; (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" ( (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" identifier == number_literal) && (parenthesized_expression "(iVar20 != iVar18)" ( (binary_expression "iVar20 != iVar18" identifier != identifier) ))) )) ; (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ) (compound_statement "{\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" { (expression_statement "iVar17 = piVar13[2] + 1;" (assignment_expression "iVar17 = piVar13[2] + 1" identifier = (binary_expression "piVar13[2] + 1" (subscript_expression "piVar13[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar13[2] = iVar17;" (assignment_expression "piVar13[2] = iVar17" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);" (assignment_expression "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" identifier = (binary_expression "iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" identifier - (call_expression "(uint)(piVar10[iVar20 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar10[iVar20 + -1] == 0)" ( (binary_expression "piVar10[iVar20 + -1] == 0" (subscript_expression "piVar10[iVar20 + -1]" identifier [ (binary_expression "iVar20 + -1" identifier + number_literal) ]) == number_literal) ))))) ;) (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" statement_identifier : (if_statement "if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" if (parenthesized_expression "(0 < (int)uVar16)" ( (binary_expression "0 < (int)uVar16" number_literal < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" { (expression_statement "iVar17 = piVar8[-1];" (assignment_expression "iVar17 = piVar8[-1]" identifier = (subscript_expression "piVar8[-1]" identifier [ number_literal ])) ;) (while_statement "while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" while (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" { (expression_statement "uVar16 = uVar16 - 1;" (assignment_expression "uVar16 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if (uVar16 == 0) break;" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar17 = piVar8[-2];" (assignment_expression "iVar17 = piVar8[-2]" identifier = (subscript_expression "piVar8[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" identifier = (binary_expression "piVar8 + -1" identifier + number_literal)) ;) })) }))) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x10)" * (cast_expression "(uint *)(puVar24 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);" (call_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)" ( (pointer_expression "*(code *)PTR___gmpn_divexact_0009d4b4" * (cast_expression "(code *)PTR___gmpn_divexact_0009d4b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar7,piVar10,iVar20,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);" (assignment_expression "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" identifier = (binary_expression "(iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(iVar18 - uVar16)" ( (binary_expression "iVar18 - uVar16" identifier - identifier) )) - (call_expression "(uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar7[(iVar18 - uVar16) + -1] == 0)" ( (binary_expression "piVar7[(iVar18 - uVar16) + -1] == 0" (subscript_expression "piVar7[(iVar18 - uVar16) + -1]" identifier [ (binary_expression "(iVar18 - uVar16) + -1" (parenthesized_expression "(iVar18 - uVar16)" ( (binary_expression "iVar18 - uVar16" identifier - identifier) )) + number_literal) ]) == number_literal) ))))) ;) }) (else_clause "else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" else (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" { (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" ( (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" ( (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" ( (comma_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_0009d514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_0009d514" * (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar10,piVar10,param_1,param_7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((int)param_7 < iVar20)" ( (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) ))) )) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" { (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" identifier = (binary_expression "piVar10 + param_7" identifier + identifier)) ;) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar18 + -1;" (assignment_expression "*piVar13 = iVar18 + -1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" if (parenthesized_expression "((iVar18 == 0) && ((int)(param_7 + 1) < iVar20))" ( (binary_expression "(iVar18 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) && (parenthesized_expression "((int)(param_7 + 1) < iVar20)" ( (binary_expression "(int)(param_7 + 1) < iVar20" (cast_expression "(int)(param_7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 + 1)" ( (binary_expression "param_7 + 1" identifier + number_literal) ))) < identifier) ))) )) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" { (expression_statement "iVar17 = piVar10[param_7 + 1];" (assignment_expression "iVar17 = piVar10[param_7 + 1]" identifier = (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ])) ;) (expression_statement "piVar10[param_7 + 1] = iVar17 + -1;" (assignment_expression "piVar10[param_7 + 1] = iVar17 + -1" (subscript_expression "piVar10[param_7 + 1]" identifier [ (binary_expression "param_7 + 1" identifier + number_literal) ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" for ( (assignment_expression "iVar18 = param_7 + 2" identifier = (binary_expression "param_7 + 2" identifier + number_literal)) ; (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" ( (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" identifier == number_literal) && (parenthesized_expression "(iVar20 != iVar18)" ( (binary_expression "iVar20 != iVar18" identifier != identifier) ))) )) ; (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ) (compound_statement "{\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" { (expression_statement "iVar17 = piVar13[2];" (assignment_expression "iVar17 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (expression_statement "piVar13[2] = iVar17 + -1;" (assignment_expression "piVar13[2] = iVar17 + -1" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) })) })) })) (if_statement "if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) (compound_statement "{\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" { (if_statement "if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;" if (parenthesized_expression "(piVar10[iVar20 + -1] != 0)" ( (binary_expression "piVar10[iVar20 + -1] != 0" (subscript_expression "piVar10[iVar20 + -1]" identifier [ (binary_expression "iVar20 + -1" identifier + number_literal) ]) != number_literal) )) (goto_statement "goto LAB_0004f720;" goto statement_identifier ;)) (expression_statement "piVar13 = piVar10 + iVar20;" (assignment_expression "piVar13 = piVar10 + iVar20" identifier = (binary_expression "piVar10 + iVar20" identifier + identifier)) ;) (do_statement "do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);" do (compound_statement "{\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            }" { (expression_statement "iVar18 = iVar20;" (assignment_expression "iVar18 = iVar20" identifier = identifier) ;) (expression_statement "iVar20 = iVar18 + -1;" (assignment_expression "iVar20 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f5f0;" goto statement_identifier ;) })) (expression_statement "piVar12 = piVar13 + -2;" (assignment_expression "piVar12 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar12 == 0)" ( (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" * identifier) == number_literal) )) ;) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" { (labeled_statement "LAB_0004f720:\n            iVar18 = iVar20 + 1;" statement_identifier : (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (goto_statement "goto LAB_0004f728;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0004f5f0:\n        bVar2 = local_68 < 1;" statement_identifier : (expression_statement "bVar2 = local_68 < 1;" (assignment_expression "bVar2 = local_68 < 1" identifier = (binary_expression "local_68 < 1" identifier < number_literal)) ;)) (if_statement "if (bVar2) {\n          local_68 = -local_68;\n        }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n          local_68 = -local_68;\n        }" { (expression_statement "local_68 = -local_68;" (assignment_expression "local_68 = -local_68" identifier = (unary_expression "-local_68" - identifier)) ;) })) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" identifier = identifier) ;) (expression_statement "uVar16 = (uint)bVar2;" (assignment_expression "uVar16 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" if (parenthesized_expression "((0 < iVar22) && (piVar23[iVar22 + -1] == 0))" ( (binary_expression "(0 < iVar22) && (piVar23[iVar22 + -1] == 0)" (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) && (parenthesized_expression "(piVar23[iVar22 + -1] == 0)" ( (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" identifier [ (binary_expression "iVar22 + -1" identifier + number_literal) ]) == number_literal) ))) )) (compound_statement "{\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" { (expression_statement "piVar13 = piVar23 + iVar22;" (assignment_expression "piVar13 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (do_statement "do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);" do (compound_statement "{\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (if_statement "if (iVar22 == 0) break;" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar8 = piVar13 + -2;" (assignment_expression "piVar8 = piVar13 + -2" identifier = (binary_expression "piVar13 + -2" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar8 == 0)" ( (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" * identifier) == number_literal) )) ;) })) (if_statement "if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" if (parenthesized_expression "(iVar22 < local_68)" ( (binary_expression "iVar22 < local_68" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar9,iVar20,piVar23)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" else (compound_statement "{\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = local_68;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_68" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar23,iVar22,piVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);" (assignment_expression "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" identifier = (binary_expression "(iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(iVar22 + local_68)" ( (binary_expression "iVar22 + local_68" identifier + identifier) )) - (call_expression "(uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[iVar22 + local_68 + -1] == 0)" ( (binary_expression "param_2[iVar22 + local_68 + -1] == 0" (subscript_expression "param_2[iVar22 + local_68 + -1]" identifier [ (binary_expression "iVar22 + local_68 + -1" (binary_expression "iVar22 + local_68" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar18 < 1) goto LAB_0004f6f8;" if (parenthesized_expression "(iVar18 < 1)" ( (binary_expression "iVar18 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0004f6f8;" goto statement_identifier ;)) (if_statement "if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" if (parenthesized_expression "(iVar6 < iVar18)" ( (binary_expression "iVar6 < iVar18" identifier < identifier) )) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar6;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar6" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar7,iVar18,piVar14)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" else (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" { (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" * (cast_expression "(int *)(puVar24 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x10)" ( (binary_expression "puVar24 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" * (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar23,piVar14,iVar6,piVar7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);" (assignment_expression "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" identifier = (binary_expression "(iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(iVar18 + iVar6)" ( (binary_expression "iVar18 + iVar6" identifier + identifier) )) - (call_expression "(uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar23[iVar18 + iVar6 + -1] == 0)" ( (binary_expression "piVar23[iVar18 + iVar6 + -1] == 0" (subscript_expression "piVar23[iVar18 + iVar6 + -1]" identifier [ (binary_expression "iVar18 + iVar6 + -1" (binary_expression "iVar18 + iVar6" identifier + identifier) + number_literal) ]) == number_literal) ))))) ;) (if_statement "if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" if (parenthesized_expression "(iVar22 < iVar18)" ( (binary_expression "iVar22 < iVar18" identifier < identifier) )) (compound_statement "{\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }" { (if_statement "if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" { (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,piVar23,param_2,iVar22)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" { (if_statement "if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(param_2 == piVar23)" ( (binary_expression "param_2 == piVar23" identifier == identifier) )) (compound_statement "{\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" { (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar18,iVar18 * 4)" identifier (argument_list "(iVar18,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" identifier = (binary_expression "iVar22 < iVar18" identifier < identifier)) ;) (goto_statement "goto LAB_0004fa3c;" goto statement_identifier ;) })) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" identifier = (binary_expression "piVar23 + iVar22" identifier + identifier)) ;) (expression_statement "piVar14 = param_2 + iVar22;" (assignment_expression "piVar14 = param_2 + iVar22" identifier = (binary_expression "param_2 + iVar22" identifier + identifier)) ;) (while_statement "while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" { (expression_statement "iVar20 = iVar22;" (assignment_expression "iVar20 = iVar22" identifier = identifier) ;) (expression_statement "iVar6 = *piVar9;" (assignment_expression "iVar6 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar22 = iVar20 + 1;" (assignment_expression "iVar22 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*piVar14 = iVar6 + 1;" (assignment_expression "*piVar14 = iVar6 + 1" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 != 0) break;" if (parenthesized_expression "(iVar6 + 1 != 0)" ( (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (if_statement "if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar18 == iVar22)" ( (binary_expression "iVar18 == iVar22" identifier == identifier) )) (compound_statement "{\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar20 + 2,iVar18 * 4)" identifier (argument_list "(iVar20 + 2,iVar18 * 4)" ( (binary_expression "iVar20 + 2" identifier + number_literal) , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) })) })) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" identifier = (binary_expression "iVar22 < iVar18" identifier < identifier)) ;) (if_statement "if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" if (parenthesized_expression "((param_2 != piVar23) && (bVar2))" ( (binary_expression "(param_2 != piVar23) && (bVar2)" (parenthesized_expression "(param_2 != piVar23)" ( (binary_expression "param_2 != piVar23" identifier != identifier) )) && (parenthesized_expression "(bVar2)" ( identifier ))) )) (compound_statement "{\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" { (labeled_statement "LAB_0004fa3c:\n            iVar6 = 4;" statement_identifier : (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" identifier = number_literal) ;)) (if_statement "if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" { (expression_statement "iVar6 = (iVar18 - iVar22) * 4;" (assignment_expression "iVar6 = (iVar18 - iVar22) * 4" identifier = (binary_expression "(iVar18 - iVar22) * 4" (parenthesized_expression "(iVar18 - iVar22)" ( (binary_expression "iVar18 - iVar22" identifier - identifier) )) * number_literal)) ;) })) (expression_statement "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);" (call_expression "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6)" (parenthesized_expression "(*(code *)PTR_memcpy_0009d544)" ( (pointer_expression "*(code *)PTR_memcpy_0009d544" * (cast_expression "(code *)PTR_memcpy_0009d544" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + iVar22,piVar23 + iVar22,iVar6)" ( (binary_expression "param_2 + iVar22" identifier + identifier) , (binary_expression "piVar23 + iVar22" identifier + identifier) , identifier ))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar18,iVar18 * 4)" identifier (argument_list "(iVar18,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = iVar18;" (assignment_expression "iVar22 = iVar18" identifier = identifier) ;) }) (else_clause "else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" else (compound_statement "{\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" { (if_statement "if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" { (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" * (cast_expression "(code *)PTR___gmpn_add_n_0009d334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2,piVar23,iVar18)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) goto LAB_0004f6e8;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004f6e8;" goto statement_identifier ;)) (expression_statement "iVar6 = iVar18 + 1;" (assignment_expression "iVar6 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar25 = CONCAT44(iVar6,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar6,iVar18 * 4)" identifier = (call_expression "CONCAT44(iVar6,iVar18 * 4)" identifier (argument_list "(iVar6,iVar18 * 4)" ( identifier , (binary_expression "iVar18 * 4" identifier * number_literal) )))) ;) (expression_statement "piVar14 = param_2 + iVar18;" (assignment_expression "piVar14 = param_2 + iVar18" identifier = (binary_expression "param_2 + iVar18" identifier + identifier)) ;) (if_statement "if (iVar22 == iVar18) goto LAB_0004fc80;" if (parenthesized_expression "(iVar22 == iVar18)" ( (binary_expression "iVar22 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_0004fc80;" goto statement_identifier ;)) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "*piVar14 = iVar20 + 1;" (assignment_expression "*piVar14 = iVar20 + 1" (pointer_expression "*piVar14" * identifier) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (if_statement "if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" if (parenthesized_expression "(iVar20 + 1 == 0)" ( (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" { (if_statement "if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" if (parenthesized_expression "(iVar22 <= iVar6)" ( (binary_expression "iVar22 <= iVar6" identifier <= identifier) )) (compound_statement "{\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" { (labeled_statement "LAB_0004f9ec:\n                iVar6 = 1;" statement_identifier : (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;)) (expression_statement "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4)" identifier = (call_expression "CONCAT44(iVar22 + 1,iVar22 * 4)" identifier (argument_list "(iVar22 + 1,iVar22 * 4)" ( (binary_expression "iVar22 + 1" identifier + number_literal) , (binary_expression "iVar22 * 4" identifier * number_literal) )))) ;) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (expression_statement "iVar18 = iVar18 + 2;" (assignment_expression "iVar18 = iVar18 + 2" identifier = (binary_expression "iVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar20 = param_2[iVar6] + 1;" (assignment_expression "iVar20 = param_2[iVar6] + 1" identifier = (binary_expression "param_2[iVar6] + 1" (subscript_expression "param_2[iVar6]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "param_2[iVar6] = iVar20;" (assignment_expression "param_2[iVar6] = iVar20" (subscript_expression "param_2[iVar6]" identifier [ identifier ]) = identifier) ;) (if_statement "if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" { (do_statement "do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);" do (compound_statement "{\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                }" { (if_statement "if (iVar22 == iVar18) goto LAB_0004f9ec;" if (parenthesized_expression "(iVar22 == iVar18)" ( (binary_expression "iVar22 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_0004f9ec;" goto statement_identifier ;)) (expression_statement "iVar20 = piVar14[2];" (assignment_expression "iVar20 = piVar14[2]" identifier = (subscript_expression "piVar14[2]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "piVar14[2] = iVar20 + 1;" (assignment_expression "piVar14[2] = iVar20 + 1" (subscript_expression "piVar14[2]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 + 1 == 0)" ( (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" identifier + number_literal) == number_literal) )) ;) (goto_statement "goto LAB_0004f6e8;" goto statement_identifier ;) })) })) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);" statement_identifier : (expression_statement "uVar25 = CONCAT44(iVar22,iVar22 << 2);" (assignment_expression "uVar25 = CONCAT44(iVar22,iVar22 << 2)" identifier = (call_expression "CONCAT44(iVar22,iVar22 << 2)" identifier (argument_list "(iVar22,iVar22 << 2)" ( identifier , (binary_expression "iVar22 << 2" identifier << number_literal) )))) ;)) (goto_statement "goto LAB_0004f6ec;" goto statement_identifier ;) })) (labeled_statement "LAB_0004f480:\n      iVar22 = iVar6 + -1;" statement_identifier : (expression_statement "iVar22 = iVar6 + -1;" (assignment_expression "iVar22 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;)) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" { (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);" do (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar20;" (assignment_expression "*piVar9 = iVar20" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) (expression_statement "local_8c = param_2 + iVar6 + -1;" (assignment_expression "local_8c = param_2 + iVar6 + -1" identifier = (binary_expression "param_2 + iVar6 + -1" (binary_expression "param_2 + iVar6" identifier + identifier) + number_literal)) ;) })) (expression_statement "iVar18 = -iVar6;" (assignment_expression "iVar18 = -iVar6" identifier = (unary_expression "-iVar6" - identifier)) ;) (expression_statement "*local_8c = iVar20;" (assignment_expression "*local_8c = iVar20" (pointer_expression "*local_8c" * identifier) = identifier) ;) }))) (labeled_statement "LAB_0004f338:\n    *param_3 = iVar18;" statement_identifier : (expression_statement "*param_3 = iVar18;" (assignment_expression "*param_3 = iVar18" (pointer_expression "*param_3" * identifier) = identifier) ;)) (goto_statement "goto joined_r0x0004f3e8;" goto statement_identifier ;) }))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" * (cast_expression "(int **)(puVar24 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x18)" ( (binary_expression "puVar24 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" * (cast_expression "(uint *)(puVar24 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x14)" ( (binary_expression "puVar24 + 0x14" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0004f4dc;" goto statement_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 (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT) ))) / LIT) + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (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 (pointer_expression & IDENT) + IDENT) )))) ;) }) (else_clause else (compound_statement { (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) ))))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (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 (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (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 = (pointer_expression * 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) = IDENT) ;) (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression 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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT - IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , (binary_expression IDENT - IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 , (binary_expression IDENT + IDENT) , IDENT , 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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * 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 IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 (pointer_expression * IDENT) = IDENT) ;) (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) && (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (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 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 (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT - IDENT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , (binary_expression IDENT - IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 , (binary_expression IDENT + IDENT) , IDENT , 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 IDENT = (binary_expression 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 { (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 IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , 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 , IDENT , (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , 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 , IDENT , (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) && (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (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 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 (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & 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 , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (labeled_statement statement_identifier : (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (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 (pointer_expression * IDENT) != (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (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 IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression 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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * 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) = IDENT) ;) (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (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 ( ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (break_statement break ;))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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)) ;) })) (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 = (pointer_expression * 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) = IDENT) ;) (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) = IDENT) ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) )) (compound_statement { (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) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ))) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (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 ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT) ]) == LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ))) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + LIT)) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) == LIT) ))) )) (compound_statement { (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) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) == LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) == LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 , IDENT , IDENT )))) ;) (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 = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (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)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (break_statement break ;)) (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 == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT * LIT) )))) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (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 (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT * LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 ;) })) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT << LIT) )))) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) = IDENT) ;) (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "uint __gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)\n\n{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" (type_identifier "uint") (function_declarator "__gmpn_gcdext(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" (identifier "__gmpn_gcdext") (parameter_list "(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,\n                  uint param_7)" (( "(") (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 "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (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") (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")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *piVar10;\n  int *piVar11;\n  int *piVar12;\n  int *piVar13;\n  int *piVar14;\n  int *piVar15;\n  uint uVar16;\n  int iVar17;\n  int iVar18;\n  uint *puVar19;\n  int iVar20;\n  uint *puVar21;\n  int iVar22;\n  int *piVar23;\n  int unaff_s4;\n  undefined1 *puVar24;\n  undefined8 uVar25;\n  undefined1 auStack_c8 [32];\n  int *local_90;\n  int *local_8c;\n  int local_6c;\n  int local_68;\n  int *local_64;\n  uint local_60;\n  int *local_5c;\n  int *local_58;\n  int local_54;\n  int *local_50;\n  int *local_4c;\n  int *local_48;\n  undefined1 auStack_44 [4];\n  int local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  int *local_34;\n  int *local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  puVar24 = auStack_c8;\n  uVar16 = param_7 * 4 + 3;\n  uVar5 = (param_5 - param_7) + 1;\n  if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }\n  iVar22 = param_7 + 1;\n  local_6c = 0;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  uVar5 = uVar16 << 2;\n  iVar18 = (int)param_7 >> 1;\n  if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }\n  if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }\n  local_90 = param_1;\n  local_8c = param_2;\n  if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }\nLAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }\n  *(int **)(puVar24 + 0x18) = piVar14;\n  *(uint *)(puVar24 + 0x14) = param_7;\nLAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;\n  param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);\njoined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }\n  return param_7;\nLAB_0004efd4:\n  uVar5 = puVar21[-1];\n  while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }\n  if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }\nLAB_0004f044:\n  *param_3 = iVar22;\n  param_7 = uVar16;\n  goto joined_r0x0004f3e8;\nLAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }\n  *(int **)(puVar24 + 0x18) = piVar9;\n  *(uint *)(puVar24 + 0x14) = uVar16;\n  goto LAB_0004f4dc;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "uint *puVar21;" (type_identifier "uint") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "int unaff_s4;" (primitive_type "int") (identifier "unaff_s4") (; ";")) (declaration "undefined1 *puVar24;" (type_identifier "undefined1") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "undefined8 uVar25;" (type_identifier "undefined8") (identifier "uVar25") (; ";")) (declaration "undefined1 auStack_c8 [32];" (type_identifier "undefined1") (array_declarator "auStack_c8 [32]" (identifier "auStack_c8") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "int *local_90;" (primitive_type "int") (pointer_declarator "*local_90" (* "*") (identifier "local_90")) (; ";")) (declaration "int *local_8c;" (primitive_type "int") (pointer_declarator "*local_8c" (* "*") (identifier "local_8c")) (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int *local_64;" (primitive_type "int") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "int *local_5c;" (primitive_type "int") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "int *local_58;" (primitive_type "int") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int *local_50;" (primitive_type "int") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "int *local_4c;" (primitive_type "int") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int *local_48;" (primitive_type "int") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined1 auStack_44 [4];" (type_identifier "undefined1") (array_declarator "auStack_44 [4]" (identifier "auStack_44") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (expression_statement "puVar24 = auStack_c8;" (assignment_expression "puVar24 = auStack_c8" (identifier "puVar24") (= "=") (identifier "auStack_c8")) (; ";")) (expression_statement "uVar16 = param_7 * 4 + 3;" (assignment_expression "uVar16 = param_7 * 4 + 3" (identifier "uVar16") (= "=") (binary_expression "param_7 * 4 + 3" (binary_expression "param_7 * 4" (identifier "param_7") (* "*") (number_literal "4")) (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar5 = (param_5 - param_7) + 1;" (assignment_expression "uVar5 = (param_5 - param_7) + 1" (identifier "uVar5") (= "=") (binary_expression "(param_5 - param_7) + 1" (parenthesized_expression "(param_5 - param_7)" (( "(") (binary_expression "param_5 - param_7" (identifier "param_5") (- "-") (identifier "param_7")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)uVar16 <= (int)uVar5) {\n    uVar16 = uVar5;\n  }" (if "if") (parenthesized_expression "((int)uVar16 <= (int)uVar5)" (( "(") (binary_expression "(int)uVar16 <= (int)uVar5" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (<= "<=") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (compound_statement "{\n    uVar16 = uVar5;\n  }" ({ "{") (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" (identifier "uVar16") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "iVar22 = param_7 + 1;" (assignment_expression "iVar22 = param_7 + 1" (identifier "iVar22") (= "=") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0009d540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009d540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009d540")))) (; ";")) (expression_statement "uVar5 = uVar16 << 2;" (assignment_expression "uVar5 = uVar16 << 2" (identifier "uVar5") (= "=") (binary_expression "uVar16 << 2" (identifier "uVar16") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "iVar18 = (int)param_7 >> 1;" (assignment_expression "iVar18 = (int)param_7 >> 1" (identifier "iVar18") (= "=") (binary_expression "(int)param_7 >> 1" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (599 < (int)param_7) {\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" (if "if") (parenthesized_expression "(599 < (int)param_7)" (( "(") (binary_expression "599 < (int)param_7" (number_literal "599") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n    iVar6 = (int)param_7 / 3;\n    iVar20 = iVar6;\n    if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }\n    iVar17 = iVar18;\n    if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }\n    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();\n    iVar17 = param_7 + iVar17 + -1;\n    if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }\n    uVar5 = 0x106b;\n    if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }\n    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;\n    uVar16 = iVar6 + unaff_s4;\n    if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }\n    uVar16 = iVar22 * 2 + uVar16;\n    uVar5 = uVar16 * 4;\n  }" ({ "{") (expression_statement "iVar6 = (int)param_7 / 3;" (assignment_expression "iVar6 = (int)param_7 / 3" (identifier "iVar6") (= "=") (binary_expression "(int)param_7 / 3" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (/ "/") (number_literal "3"))) (; ";")) (expression_statement "iVar20 = iVar6;" (assignment_expression "iVar20 = iVar6" (identifier "iVar20") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar18 <= iVar6) {\n      iVar20 = iVar18;\n    }" (if "if") (parenthesized_expression "(iVar18 <= iVar6)" (( "(") (binary_expression "iVar18 <= iVar6" (identifier "iVar18") (<= "<=") (identifier "iVar6")) () ")")) (compound_statement "{\n      iVar20 = iVar18;\n    }" ({ "{") (expression_statement "iVar20 = iVar18;" (assignment_expression "iVar20 = iVar18" (identifier "iVar20") (= "=") (identifier "iVar18")) (; ";")) (} "}"))) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" (identifier "iVar17") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (iVar18 < iVar6) {\n      iVar17 = iVar6;\n    }" (if "if") (parenthesized_expression "(iVar18 < iVar6)" (( "(") (binary_expression "iVar18 < iVar6" (identifier "iVar18") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n      iVar17 = iVar6;\n    }" ({ "{") (expression_statement "iVar17 = iVar6;" (assignment_expression "iVar17 = iVar6" (identifier "iVar17") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (expression_statement "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)()" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)()" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_itch_0009d464"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar17 = param_7 + iVar17 + -1;" (assignment_expression "iVar17 = param_7 + iVar17 + -1" (identifier "iVar17") (= "=") (binary_expression "param_7 + iVar17 + -1" (binary_expression "param_7 + iVar17" (identifier "param_7") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar6 <= iVar17) {\n      iVar6 = iVar17;\n    }" (if "if") (parenthesized_expression "(iVar6 <= iVar17)" (( "(") (binary_expression "iVar6 <= iVar17" (identifier "iVar6") (<= "<=") (identifier "iVar17")) () ")")) (compound_statement "{\n      iVar6 = iVar17;\n    }" ({ "{") (expression_statement "iVar6 = iVar17;" (assignment_expression "iVar6 = iVar17" (identifier "iVar6") (= "=") (identifier "iVar17")) (; ";")) (} "}"))) (expression_statement "uVar5 = 0x106b;" (assignment_expression "uVar5 = 0x106b" (identifier "uVar5") (= "=") (number_literal "0x106b")) (; ";")) (if_statement "if (0x106a < (int)uVar16) {\n      uVar5 = uVar16;\n    }" (if "if") (parenthesized_expression "(0x106a < (int)uVar16)" (( "(") (binary_expression "0x106a < (int)uVar16" (number_literal "0x106a") (< "<") (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16"))) () ")")) (compound_statement "{\n      uVar5 = uVar16;\n    }" ({ "{") (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" (identifier "uVar5") (= "=") (identifier "uVar16")) (; ";")) (} "}"))) (expression_statement "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;" (assignment_expression "unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" (identifier "unaff_s4") (= "=") (binary_expression "((int)((param_7 - iVar20) + 1) / 2 + 1) * 4" (parenthesized_expression "((int)((param_7 - iVar20) + 1) / 2 + 1)" (( "(") (binary_expression "(int)((param_7 - iVar20) + 1) / 2 + 1" (binary_expression "(int)((param_7 - iVar20) + 1) / 2" (cast_expression "(int)((param_7 - iVar20) + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((param_7 - iVar20) + 1)" (( "(") (binary_expression "(param_7 - iVar20) + 1" (parenthesized_expression "(param_7 - iVar20)" (( "(") (binary_expression "param_7 - iVar20" (identifier "param_7") (- "-") (identifier "iVar20")) () ")")) (+ "+") (number_literal "1")) () ")"))) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar16 = iVar6 + unaff_s4;" (assignment_expression "uVar16 = iVar6 + unaff_s4" (identifier "uVar16") (= "=") (binary_expression "iVar6 + unaff_s4" (identifier "iVar6") (+ "+") (identifier "unaff_s4"))) (; ";")) (if_statement "if (iVar6 + unaff_s4 < (int)uVar5) {\n      uVar16 = uVar5;\n    }" (if "if") (parenthesized_expression "(iVar6 + unaff_s4 < (int)uVar5)" (( "(") (binary_expression "iVar6 + unaff_s4 < (int)uVar5" (binary_expression "iVar6 + unaff_s4" (identifier "iVar6") (+ "+") (identifier "unaff_s4")) (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (compound_statement "{\n      uVar16 = uVar5;\n    }" ({ "{") (expression_statement "uVar16 = uVar5;" (assignment_expression "uVar16 = uVar5" (identifier "uVar16") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "uVar16 = iVar22 * 2 + uVar16;" (assignment_expression "uVar16 = iVar22 * 2 + uVar16" (identifier "uVar16") (= "=") (binary_expression "iVar22 * 2 + uVar16" (binary_expression "iVar22 * 2" (identifier "iVar22") (* "*") (number_literal "2")) (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar5 = uVar16 * 4;" (assignment_expression "uVar5 = uVar16 * 4" (identifier "uVar5") (= "=") (binary_expression "uVar16 * 4" (identifier "uVar16") (* "*") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if (uVar5 < 0x7f01) {\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }\n  else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" (if "if") (parenthesized_expression "(uVar5 < 0x7f01)" (( "(") (binary_expression "uVar5 < 0x7f01" (identifier "uVar5") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iVar6 = -(uVar5 + 7 & 0xfffffff8);\n    puVar24 = auStack_c8 + iVar6;\n    piVar14 = (int *)(&stack0xffffff58 + iVar6);\n  }" ({ "{") (expression_statement "iVar6 = -(uVar5 + 7 & 0xfffffff8);" (assignment_expression "iVar6 = -(uVar5 + 7 & 0xfffffff8)" (identifier "iVar6") (= "=") (unary_expression "-(uVar5 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar5 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar5 + 7 & 0xfffffff8" (binary_expression "uVar5 + 7" (identifier "uVar5") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar24 = auStack_c8 + iVar6;" (assignment_expression "puVar24 = auStack_c8 + iVar6" (identifier "puVar24") (= "=") (binary_expression "auStack_c8 + iVar6" (identifier "auStack_c8") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "piVar14 = (int *)(&stack0xffffff58 + iVar6);" (assignment_expression "piVar14 = (int *)(&stack0xffffff58 + iVar6)" (identifier "piVar14") (= "=") (cast_expression "(int *)(&stack0xffffff58 + iVar6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffff58 + iVar6)" (( "(") (binary_expression "&stack0xffffff58 + iVar6" (pointer_expression "&stack0xffffff58" (& "&") (identifier "stack0xffffff58")) (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" (else "else") (compound_statement "{\n    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);\n  }" ({ "{") (expression_statement "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);" (assignment_expression "piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" (identifier "piVar14") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_0009d2f0"))) () ")")) (argument_list "(&local_6c)" (( "(") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "local_90 = param_1;" (assignment_expression "local_90 = param_1" (identifier "local_90") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_8c = param_2;" (assignment_expression "local_8c = param_2" (identifier "local_8c") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int)param_7 < param_5) {\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" (if "if") (parenthesized_expression "((int)param_7 < param_5)" (( "(") (binary_expression "(int)param_7 < param_5" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (identifier "param_5")) () ")")) (compound_statement "{\n    *(uint *)(puVar24 + 0x18) = param_7;\n    *(int **)(puVar24 + 0x14) = param_6;\n    *(int *)(puVar24 + 0x10) = param_5;\n    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);\n    piVar9 = param_4 + param_7;\n    uVar5 = param_7;\n    do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);\n    if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    *param_3 = 0;\n    goto joined_r0x0004f3e8;\n  }" ({ "{") (expression_statement "*(uint *)(puVar24 + 0x18) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x18) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x18)" (* "*") (cast_expression "(uint *)(puVar24 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "param_7")) (; ";")) (expression_statement "*(int **)(puVar24 + 0x14) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x14) = param_6" (pointer_expression "*(int **)(puVar24 + 0x14)" (* "*") (cast_expression "(int **)(puVar24 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(int *)(puVar24 + 0x10) = param_5;" (assignment_expression "*(int *)(puVar24 + 0x10) = param_5" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);" (call_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_tdiv_qr_0009d614)" (( "(") (pointer_expression "*(code *)PTR___gmpn_tdiv_qr_0009d614" (* "*") (cast_expression "(code *)PTR___gmpn_tdiv_qr_0009d614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_tdiv_qr_0009d614"))) () ")")) (argument_list "(piVar14,param_4,0,param_4)" (( "(") (identifier "piVar14") (, ",") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "piVar9 = param_4 + param_7;" (assignment_expression "piVar9 = param_4 + param_7" (identifier "piVar9") (= "=") (binary_expression "param_4 + param_7" (identifier "param_4") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "uVar5 = param_7;" (assignment_expression "uVar5 = param_7" (identifier "uVar5") (= "=") (identifier "param_7")) (; ";")) (do_statement "do {\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    } while (uVar5 != 0);" (do "do") (compound_statement "{\n      uVar5 = uVar5 - 1;\n      if (piVar9[-1] != 0) goto LAB_0004eb40;\n      piVar9 = piVar9 + -1;\n    }" ({ "{") (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (piVar9[-1] != 0) goto LAB_0004eb40;" (if "if") (parenthesized_expression "(piVar9[-1] != 0)" (( "(") (binary_expression "piVar9[-1] != 0" (subscript_expression "piVar9[-1]" (identifier "piVar9") ([ "[") (number_literal "-1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004eb40;" (goto "goto") (statement_identifier "LAB_0004eb40") (; ";"))) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + -1" (identifier "piVar9") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (param_7 != 0) {\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar22 = param_7 - 1;\n      iVar18 = *param_6;\n      piVar14 = param_1;\n      if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }\n      *local_90 = iVar18;\n    }" ({ "{") (expression_statement "iVar22 = param_7 - 1;" (assignment_expression "iVar22 = param_7 - 1" (identifier "iVar22") (= "=") (binary_expression "param_7 - 1" (identifier "param_7") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" (identifier "iVar18") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (expression_statement "piVar14 = param_1;" (assignment_expression "piVar14 = param_1" (identifier "piVar14") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (iVar22 != 0) {\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);\n        local_90 = param_1 + (param_7 - 1);\n      }" ({ "{") (do_statement "do {\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        } while (iVar22 != 0);" (do "do") (compound_statement "{\n          param_6 = param_6 + 1;\n          *piVar14 = iVar18;\n          iVar22 = iVar22 + -1;\n          iVar18 = *param_6;\n          piVar14 = piVar14 + 1;\n        }" ({ "{") (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar14 = iVar18;" (assignment_expression "*piVar14 = iVar18" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar18 = *param_6;" (assignment_expression "iVar18 = *param_6" (identifier "iVar18") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_90 = param_1 + (param_7 - 1);" (assignment_expression "local_90 = param_1 + (param_7 - 1)" (identifier "local_90") (= "=") (binary_expression "param_1 + (param_7 - 1)" (identifier "param_1") (+ "+") (parenthesized_expression "(param_7 - 1)" (( "(") (binary_expression "param_7 - 1" (identifier "param_7") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" (* "*") (identifier "local_90")) (= "=") (identifier "iVar18")) (; ";")) (} "}"))) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto joined_r0x0004f3e8;" (goto "goto") (statement_identifier "joined_r0x0004f3e8") (; ";")) (} "}"))) (labeled_statement "LAB_0004eb40:\n  if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" (statement_identifier "LAB_0004eb40") (: ":") (if_statement "if (599 < (int)param_7) {\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" (if "if") (parenthesized_expression "(599 < (int)param_7)" (( "(") (binary_expression "599 < (int)param_7" (number_literal "599") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n    if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }\n    piVar23 = piVar14 + iVar22;\n    piVar9 = piVar23 + iVar22;\n    local_64 = param_1;\n    local_5c = param_2;\n    local_58 = param_3;\n    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);\n    piVar13 = piVar9 + unaff_s4;\n    *(int **)(puVar24 + 0x10) = piVar13;\n    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);\n    if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }\n    if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }\nLAB_0004ef08:\n    piVar13 = param_4 + uVar16;\n    piVar8 = param_6 + uVar16;\n    uVar5 = uVar16;\n    piVar7 = piVar13;\n    piVar10 = piVar8;\n    while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }\n    piVar13 = piVar14 + iVar22;\n    puVar21 = (uint *)(piVar23 + iVar22);\n    iVar18 = iVar22;\n    piVar9 = piVar13;\n    puVar19 = puVar21;\n    do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);\n    if (*puVar19 < *puVar1) goto LAB_0004efd4;\n    if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }\n    goto LAB_0004f044;\n  }" ({ "{") (if_statement "if (iVar22 != 0) {\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);\n    }" ({ "{") (expression_statement "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);" (call_expression "(*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8)" (parenthesized_expression "(*(code *)PTR_memset_0009d2e8)" (( "(") (pointer_expression "*(code *)PTR_memset_0009d2e8" (* "*") (cast_expression "(code *)PTR_memset_0009d2e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_0009d2e8"))) () ")")) (argument_list "(piVar14,0,iVar22 * 8)" (( "(") (identifier "piVar14") (, ",") (number_literal "0") (, ",") (binary_expression "iVar22 * 8" (identifier "iVar22") (* "*") (number_literal "8")) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar23 = piVar14 + iVar22;" (assignment_expression "piVar23 = piVar14 + iVar22" (identifier "piVar23") (= "=") (binary_expression "piVar14 + iVar22" (identifier "piVar14") (+ "+") (identifier "iVar22"))) (; ";")) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" (identifier "piVar9") (= "=") (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22"))) (; ";")) (expression_statement "local_64 = param_1;" (assignment_expression "local_64 = param_1" (identifier "local_64") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_5c = param_2;" (assignment_expression "local_5c = param_2" (identifier "local_5c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" (identifier "local_58") (= "=") (identifier "param_3")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_init_0009d3bc"))) () ")")) (argument_list "(auStack_44,param_7 - iVar18,piVar9)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "param_7 - iVar18" (identifier "param_7") (- "-") (identifier "iVar18")) (, ",") (identifier "piVar9") () ")"))) (; ";")) (expression_statement "piVar13 = piVar9 + unaff_s4;" (assignment_expression "piVar13 = piVar9 + unaff_s4" (identifier "piVar13") (= "=") (binary_expression "piVar9 + unaff_s4" (identifier "piVar9") (+ "+") (identifier "unaff_s4"))) (; ";")) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" (* "*") (cast_expression "(int **)(puVar24 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);" (assignment_expression "iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" (identifier "iVar22") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_0009d264"))) () ")")) (argument_list "(param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44)" (( "(") (binary_expression "param_4 + iVar18" (identifier "param_4") (+ "+") (identifier "iVar18")) (, ",") (binary_expression "param_6 + iVar18" (identifier "param_6") (+ "+") (identifier "iVar18")) (, ",") (binary_expression "param_7 - iVar18" (identifier "param_7") (- "-") (identifier "iVar18")) (, ",") (identifier "auStack_44") () ")")))) (; ";")) (if_statement "if (iVar22 < 1) {\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }\n    else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" (if "if") (parenthesized_expression "(iVar22 < 1)" (( "(") (binary_expression "iVar22 < 1" (identifier "iVar22") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      *piVar23 = 1;\n      *(int **)(puVar24 + 0x18) = piVar9;\n      local_48 = piVar9 + param_7;\n      *(int ***)(puVar24 + 0x14) = &local_64;\n      local_54 = 1;\n      local_50 = piVar14;\n      local_4c = piVar23;\n      *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);\n      iVar22 = local_54;\n      if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }\n    }" ({ "{") (expression_statement "*piVar23 = 1;" (assignment_expression "*piVar23 = 1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" (* "*") (cast_expression "(int **)(puVar24 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "local_48 = piVar9 + param_7;" (assignment_expression "local_48 = piVar9 + param_7" (identifier "local_48") (= "=") (binary_expression "piVar9 + param_7" (identifier "piVar9") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" (* "*") (cast_expression "(int ***)(puVar24 + 0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" (identifier "local_54") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" (identifier "local_50") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" (identifier "local_4c") (= "=") (identifier "piVar23")) (; ";")) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" (* "*") (cast_expression "(undefined **)(puVar24 + 0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "PTR___gmpn_gcdext_hook_0009d2c0")) (; ";")) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" (identifier "uVar16") (= "=") (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (* "*") (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcd_subdiv_step_0009d118"))) () ")")) (argument_list "(param_4,param_6,param_7,0)" (( "(") (identifier "param_4") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" (identifier "iVar22") (= "=") (identifier "local_54")) (; ";")) (if_statement "if (uVar16 == 0) {\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004f0cc:\n        param_7 = local_60;\n        if (local_6c == 0) goto LAB_0004f0dc;\n        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n        param_7 = local_60;\n        goto LAB_0004f0dc;\n      }" ({ "{") (labeled_statement "LAB_0004f0cc:\n        param_7 = local_60;" (statement_identifier "LAB_0004f0cc") (: ":") (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" (identifier "param_7") (= "=") (identifier "local_60")) (; ";"))) (if_statement "if (local_6c == 0) goto LAB_0004f0dc;" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f0dc;" (goto "goto") (statement_identifier "LAB_0004f0dc") (; ";"))) (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_0009d618"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_7 = local_60;" (assignment_expression "param_7 = local_60" (identifier "param_7") (= "=") (identifier "local_60")) (; ";")) (goto_statement "goto LAB_0004f0dc;" (goto "goto") (statement_identifier "LAB_0004f0dc") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" (else "else") (compound_statement "{\n      *(int *)(puVar24 + 0x10) = iVar18;\n      *(int **)(puVar24 + 0x14) = piVar13;\n      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);\n      piVar8 = local_30;\n      iVar22 = local_40;\n      if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }\n      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }\n    }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" (* "*") (cast_expression "(int **)(puVar24 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" (identifier "uVar16") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                         (auStack_44,iVar18 + iVar22,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_adjust_0009d3a8"))) () ")")) (argument_list "(auStack_44,iVar18 + iVar22,param_4,param_6)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "iVar18 + iVar22" (identifier "iVar18") (+ "+") (identifier "iVar22")) (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "piVar8 = local_30;" (assignment_expression "piVar8 = local_30" (identifier "piVar8") (= "=") (identifier "local_30")) (; ";")) (expression_statement "iVar22 = local_40;" (assignment_expression "iVar22 = local_40" (identifier "iVar22") (= "=") (identifier "local_40")) (; ";")) (if_statement "if (local_40 != 0) {\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar6 = local_40 + -1;\n        iVar20 = *local_34;\n        iVar18 = iVar6;\n        piVar7 = piVar14;\n        piVar10 = local_34;\n        if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }\n      }" ({ "{") (expression_statement "iVar6 = local_40 + -1;" (assignment_expression "iVar6 = local_40 + -1" (identifier "iVar6") (= "=") (binary_expression "local_40 + -1" (identifier "local_40") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar20 = *local_34;" (assignment_expression "iVar20 = *local_34" (identifier "iVar20") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";")) (expression_statement "iVar18 = iVar6;" (assignment_expression "iVar18 = iVar6" (identifier "iVar18") (= "=") (identifier "iVar6")) (; ";")) (expression_statement "piVar7 = piVar14;" (assignment_expression "piVar7 = piVar14" (identifier "piVar7") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "piVar10 = local_34;" (assignment_expression "piVar10 = local_34" (identifier "piVar10") (= "=") (identifier "local_34")) (; ";")) (if_statement "if (iVar6 == 0) {\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }\n        else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *piVar14 = iVar20;\n          *piVar23 = *piVar8;\n        }" ({ "{") (expression_statement "*piVar14 = iVar20;" (assignment_expression "*piVar14 = iVar20" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "*piVar23 = *piVar8;" (assignment_expression "*piVar23 = *piVar8" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (} "}")) (else_clause "else {\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" (else "else") (compound_statement "{\n          do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);\n          piVar14[iVar22 + -1] = iVar20;\n          iVar18 = *piVar8;\n          piVar7 = piVar23;\n          do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);\n          piVar23[iVar22 + -1] = iVar18;\n        }" ({ "{") (do_statement "do {\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          } while (iVar18 != 0);" (do "do") (compound_statement "{\n            *piVar7 = iVar20;\n            iVar18 = iVar18 + -1;\n            iVar20 = piVar10[1];\n            piVar7 = piVar7 + 1;\n            piVar10 = piVar10 + 1;\n          }" ({ "{") (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar20 = piVar10[1];" (assignment_expression "iVar20 = piVar10[1]" (identifier "iVar20") (= "=") (subscript_expression "piVar10[1]" (identifier "piVar10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10 = piVar10 + 1;" (assignment_expression "piVar10 = piVar10 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar14[iVar22 + -1] = iVar20;" (assignment_expression "piVar14[iVar22 + -1] = iVar20" (subscript_expression "piVar14[iVar22 + -1]" (identifier "piVar14") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" (identifier "iVar18") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar7 = piVar23;" (assignment_expression "piVar7 = piVar23" (identifier "piVar7") (= "=") (identifier "piVar23")) (; ";")) (do_statement "do {\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          } while (iVar6 != 0);" (do "do") (compound_statement "{\n            piVar8 = piVar8 + 1;\n            *piVar7 = iVar18;\n            iVar6 = iVar6 + -1;\n            iVar18 = *piVar8;\n            piVar7 = piVar7 + 1;\n          }" ({ "{") (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" (identifier "iVar18") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar23[iVar22 + -1] = iVar18;" (assignment_expression "piVar23[iVar22 + -1] = iVar18" (subscript_expression "piVar23[iVar22 + -1]" (identifier "piVar23") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "iVar18")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" (if "if") (parenthesized_expression "(piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0)" (( "(") (binary_expression "piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0" (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" (identifier "piVar14") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" (identifier "piVar23") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        piVar7 = piVar14 + iVar22 + -2;\n        piVar8 = piVar23 + iVar22 + -2;\n        do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);\n      }" ({ "{") (expression_statement "piVar7 = piVar14 + iVar22 + -2;" (assignment_expression "piVar7 = piVar14 + iVar22 + -2" (identifier "piVar7") (= "=") (binary_expression "piVar14 + iVar22 + -2" (binary_expression "piVar14 + iVar22" (identifier "piVar14") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar8 = piVar23 + iVar22 + -2;" (assignment_expression "piVar8 = piVar23 + iVar22 + -2" (identifier "piVar8") (= "=") (binary_expression "piVar23 + iVar22 + -2" (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "-2"))) (; ";")) (do_statement "do {\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        } while (iVar18 == 0 && iVar6 == 0);" (do "do") (compound_statement "{\n          iVar18 = *piVar7;\n          iVar22 = iVar22 + -1;\n          iVar6 = *piVar8;\n          piVar7 = piVar7 + -1;\n          piVar8 = piVar8 + -1;\n        }" ({ "{") (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" (identifier "iVar18") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" (identifier "iVar6") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + -1" (identifier "piVar8") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" (( "(") (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (} "}")))) (if_statement "if (599 < (int)uVar16) {\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" (if "if") (parenthesized_expression "(599 < (int)uVar16)" (( "(") (binary_expression "599 < (int)uVar16" (number_literal "599") (< "<") (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16"))) () ")")) (compound_statement "{\n      do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);\n    }" ({ "{") (do_statement "do {\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      } while (599 < (int)uVar16);" (do "do") (compound_statement "{\n        while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }\n        *(int **)(puVar24 + 0x18) = piVar9;\n        *(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;\n        local_54 = iVar22;\n        local_50 = piVar14;\n        local_4c = piVar23;\n        local_48 = piVar9 + uVar16;\n        *(int ***)(puVar24 + 0x14) = &local_64;\n        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);\n        if (uVar16 == 0) goto LAB_0004f0cc;\n        iVar22 = local_54;\n      }" ({ "{") (while_statement "while( true ) {\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar5 = uVar16 / 3;\n          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);\n          *(int **)(puVar24 + 0x10) = piVar13;\n          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);\n          if (iVar18 < 1) break;\n          *(int **)(puVar24 + 0x14) = piVar13;\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);\n          uVar4 = local_3c;\n          iVar18 = local_40;\n          if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }\n          piVar8 = piVar13 + iVar22;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }\n          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);\n          piVar7 = local_30;\n          iVar18 = local_40;\n          if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }\n          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);\n          iVar22 = iVar22 + local_40;\n          if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }\n          if ((int)uVar16 < 600) goto LAB_0004ef08;\n        }" ({ "{") (expression_statement "uVar5 = uVar16 / 3;" (assignment_expression "uVar5 = uVar16 / 3" (identifier "uVar5") (= "=") (binary_expression "uVar16 / 3" (identifier "uVar16") (/ "/") (number_literal "3"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_init_0009d3bc"))) () ")")) (argument_list "(auStack_44,uVar16 - uVar5,piVar9)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "uVar16 - uVar5" (identifier "uVar16") (- "-") (identifier "uVar5")) (, ",") (identifier "piVar9") () ")"))) (; ";")) (expression_statement "*(int **)(puVar24 + 0x10) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x10)" (* "*") (cast_expression "(int **)(puVar24 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" (identifier "iVar18") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_0009d264)\n                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_0009d264)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_0009d264" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_0009d264" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_0009d264"))) () ")")) (argument_list "(param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44)" (( "(") (binary_expression "param_4 + uVar5" (identifier "param_4") (+ "+") (identifier "uVar5")) (, ",") (binary_expression "param_6 + uVar5" (identifier "param_6") (+ "+") (identifier "uVar5")) (, ",") (binary_expression "uVar16 - uVar5" (identifier "uVar16") (- "-") (identifier "uVar5")) (, ",") (identifier "auStack_44") () ")")))) (; ";")) (if_statement "if (iVar18 < 1) break;" (if "if") (parenthesized_expression "(iVar18 < 1)" (( "(") (binary_expression "iVar18 < 1" (identifier "iVar18") (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(int **)(puVar24 + 0x14) = piVar13;" (assignment_expression "*(int **)(puVar24 + 0x14) = piVar13" (pointer_expression "*(int **)(puVar24 + 0x14)" (* "*") (cast_expression "(int **)(puVar24 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" (* "*") (cast_expression "(uint *)(puVar24 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" (identifier "uVar16") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                             (auStack_44,uVar5 + iVar18,param_4,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_adjust_0009d3a8"))) () ")")) (argument_list "(auStack_44,uVar5 + iVar18,param_4,param_6)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "uVar5 + iVar18" (identifier "uVar5") (+ "+") (identifier "iVar18")) (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "uVar4 = local_3c;" (assignment_expression "uVar4 = local_3c" (identifier "uVar4") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" (identifier "iVar18") (= "=") (identifier "local_40")) (; ";")) (if_statement "if (iVar22 != 0) {\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = iVar22 + -1;\n            iVar20 = *piVar14;\n            piVar7 = piVar13;\n            piVar8 = piVar14;\n            if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }\n            *piVar7 = iVar20;\n          }" ({ "{") (expression_statement "iVar6 = iVar22 + -1;" (assignment_expression "iVar6 = iVar22 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" (identifier "iVar20") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" (identifier "piVar7") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "piVar8 = piVar14;" (assignment_expression "piVar8 = piVar14" (identifier "piVar8") (= "=") (identifier "piVar14")) (; ";")) (if_statement "if (iVar6 != 0) {\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);\n              piVar7 = piVar13 + iVar22 + 0x3fffffff;\n            }" ({ "{") (do_statement "do {\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              } while (iVar6 != 0);" (do "do") (compound_statement "{\n                *piVar7 = iVar20;\n                iVar6 = iVar6 + -1;\n                iVar20 = piVar8[1];\n                piVar7 = piVar7 + 1;\n                piVar8 = piVar8 + 1;\n              }" ({ "{") (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar20 = piVar8[1];" (assignment_expression "iVar20 = piVar8[1]" (identifier "iVar20") (= "=") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar7 = piVar13 + iVar22 + 0x3fffffff;" (assignment_expression "piVar7 = piVar13 + iVar22 + 0x3fffffff" (identifier "piVar7") (= "=") (binary_expression "piVar13 + iVar22 + 0x3fffffff" (binary_expression "piVar13 + iVar22" (identifier "piVar13") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "0x3fffffff"))) (; ";")) (} "}"))) (expression_statement "*piVar7 = iVar20;" (assignment_expression "*piVar7 = iVar20" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar20")) (; ";")) (} "}"))) (expression_statement "piVar8 = piVar13 + iVar22;" (assignment_expression "piVar8 = piVar13 + iVar22" (identifier "piVar8") (= "=") (binary_expression "piVar13 + iVar22" (identifier "piVar13") (+ "+") (identifier "iVar22"))) (; ";")) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" (if "if") (parenthesized_expression "(local_40 < iVar22)" (( "(") (binary_expression "local_40 < iVar22" (identifier "local_40") (< "<") (identifier "iVar22")) () ")")) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);\n            piVar7 = local_34;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);\n          }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar8,piVar13,iVar22,uVar4)" (( "(") (identifier "piVar8") (, ",") (identifier "piVar13") (, ",") (identifier "iVar22") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" (identifier "piVar7") (= "=") (identifier "local_34")) (; ";")) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar14,piVar23,iVar22,piVar7)" (( "(") (identifier "piVar14") (, ",") (identifier "piVar23") (, ",") (identifier "iVar22") (, ",") (identifier "piVar7") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" (else "else") (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);\n            piVar7 = local_34;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);\n          }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar8,uVar4,iVar18,piVar13)" (( "(") (identifier "piVar8") (, ",") (identifier "uVar4") (, ",") (identifier "iVar18") (, ",") (identifier "piVar13") () ")"))) (; ";")) (expression_statement "piVar7 = local_34;" (assignment_expression "piVar7 = local_34" (identifier "piVar7") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" (identifier "iVar18") (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar14,piVar7,iVar18,piVar23)" (( "(") (identifier "piVar14") (, ",") (identifier "piVar7") (, ",") (identifier "iVar18") (, ",") (identifier "piVar23") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_0009d334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_0009d334"))) () ")")) (argument_list "(piVar14,piVar14,piVar8,iVar22 + local_40)" (( "(") (identifier "piVar14") (, ",") (identifier "piVar14") (, ",") (identifier "piVar8") (, ",") (binary_expression "iVar22 + local_40" (identifier "iVar22") (+ "+") (identifier "local_40")) () ")")))) (; ";")) (expression_statement "piVar7 = local_30;" (assignment_expression "piVar7 = local_30" (identifier "piVar7") (= "=") (identifier "local_30")) (; ";")) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" (identifier "iVar18") (= "=") (identifier "local_40")) (; ";")) (if_statement "if (local_40 < iVar22) {\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }\n          else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" (if "if") (parenthesized_expression "(local_40 < iVar22)" (( "(") (binary_expression "local_40 < iVar22" (identifier "local_40") (< "<") (identifier "iVar22")) () ")")) (compound_statement "{\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);\n            uVar4 = local_38;\n            *(int *)(puVar24 + 0x10) = local_40;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);\n          }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar8,piVar23,iVar22,piVar7)" (( "(") (identifier "piVar8") (, ",") (identifier "piVar23") (, ",") (identifier "iVar22") (, ",") (identifier "piVar7") () ")"))) (; ";")) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" (identifier "uVar4") (= "=") (identifier "local_38")) (; ";")) (expression_statement "*(int *)(puVar24 + 0x10) = local_40;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_40" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar23,piVar13,iVar22,uVar4)" (( "(") (identifier "piVar23") (, ",") (identifier "piVar13") (, ",") (identifier "iVar22") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" (else "else") (compound_statement "{\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);\n            uVar4 = local_38;\n            iVar18 = local_40;\n            *(int *)(puVar24 + 0x10) = iVar22;\n            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);\n          }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar8,piVar7,iVar18,piVar23)" (( "(") (identifier "piVar8") (, ",") (identifier "piVar7") (, ",") (identifier "iVar18") (, ",") (identifier "piVar23") () ")"))) (; ";")) (expression_statement "uVar4 = local_38;" (assignment_expression "uVar4 = local_38" (identifier "uVar4") (= "=") (identifier "local_38")) (; ";")) (expression_statement "iVar18 = local_40;" (assignment_expression "iVar18 = local_40" (identifier "iVar18") (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar23,uVar4,iVar18,piVar13)" (( "(") (identifier "piVar23") (, ",") (identifier "uVar4") (, ",") (identifier "iVar18") (, ",") (identifier "piVar13") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" (identifier "iVar18") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_0009d334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_0009d334"))) () ")")) (argument_list "(piVar23,piVar23,piVar8,iVar22 + local_40)" (( "(") (identifier "piVar23") (, ",") (identifier "piVar23") (, ",") (identifier "piVar8") (, ",") (binary_expression "iVar22 + local_40" (identifier "iVar22") (+ "+") (identifier "local_40")) () ")")))) (; ";")) (expression_statement "iVar22 = iVar22 + local_40;" (assignment_expression "iVar22 = iVar22 + local_40" (identifier "iVar22") (= "=") (binary_expression "iVar22 + local_40" (identifier "iVar22") (+ "+") (identifier "local_40"))) (; ";")) (if_statement "if (iVar6 == 0 && iVar18 == 0) {\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }\n          else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" (if "if") (parenthesized_expression "(iVar6 == 0 && iVar18 == 0)" (( "(") (binary_expression "iVar6 == 0 && iVar18 == 0" (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }\n          }" ({ "{") (if_statement "if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" (if "if") (parenthesized_expression "(piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0)" (( "(") (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0" (binary_expression "piVar14[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar14[iVar22 + 0x3fffffff]" (identifier "piVar14") ([ "[") (binary_expression "iVar22 + 0x3fffffff" (identifier "iVar22") (+ "+") (number_literal "0x3fffffff")) (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "piVar23[iVar22 + 0x3fffffff] == 0" (subscript_expression "piVar23[iVar22 + 0x3fffffff]" (identifier "piVar23") ([ "[") (binary_expression "iVar22 + 0x3fffffff" (identifier "iVar22") (+ "+") (number_literal "0x3fffffff")) (] "]")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n              piVar7 = piVar14 + iVar22 + 0x3ffffffe;\n              piVar8 = piVar23 + iVar22 + 0x3ffffffe;\n              do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);\n            }" ({ "{") (expression_statement "piVar7 = piVar14 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar7 = piVar14 + iVar22 + 0x3ffffffe" (identifier "piVar7") (= "=") (binary_expression "piVar14 + iVar22 + 0x3ffffffe" (binary_expression "piVar14 + iVar22" (identifier "piVar14") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "0x3ffffffe"))) (; ";")) (expression_statement "piVar8 = piVar23 + iVar22 + 0x3ffffffe;" (assignment_expression "piVar8 = piVar23 + iVar22 + 0x3ffffffe" (identifier "piVar8") (= "=") (binary_expression "piVar23 + iVar22 + 0x3ffffffe" (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "0x3ffffffe"))) (; ";")) (do_statement "do {\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              } while (iVar18 == 0 && iVar6 == 0);" (do "do") (compound_statement "{\n                iVar18 = *piVar7;\n                iVar22 = iVar22 + -1;\n                iVar6 = *piVar8;\n                piVar7 = piVar7 + -1;\n                piVar8 = piVar8 + -1;\n              }" ({ "{") (expression_statement "iVar18 = *piVar7;" (assignment_expression "iVar18 = *piVar7" (identifier "iVar18") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = *piVar8;" (assignment_expression "iVar6 = *piVar8" (identifier "iVar6") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + -1" (identifier "piVar8") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 == 0 && iVar6 == 0)" (( "(") (binary_expression "iVar18 == 0 && iVar6 == 0" (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) (&& "&&") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" (else "else") (compound_statement "{\n            piVar14[iVar22] = iVar6;\n            piVar23[iVar22] = iVar18;\n            iVar22 = iVar22 + 1;\n          }" ({ "{") (expression_statement "piVar14[iVar22] = iVar6;" (assignment_expression "piVar14[iVar22] = iVar6" (subscript_expression "piVar14[iVar22]" (identifier "piVar14") ([ "[") (identifier "iVar22") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "piVar23[iVar22] = iVar18;" (assignment_expression "piVar23[iVar22] = iVar18" (subscript_expression "piVar23[iVar22]" (identifier "piVar23") ([ "[") (identifier "iVar22") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if ((int)uVar16 < 600) goto LAB_0004ef08;" (if "if") (parenthesized_expression "((int)uVar16 < 600)" (( "(") (binary_expression "(int)uVar16 < 600" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (number_literal "600")) () ")")) (goto_statement "goto LAB_0004ef08;" (goto "goto") (statement_identifier "LAB_0004ef08") (; ";"))) (} "}"))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" (* "*") (cast_expression "(int **)(puVar24 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;" (assignment_expression "*(undefined **)(puVar24 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0" (pointer_expression "*(undefined **)(puVar24 + 0x10)" (* "*") (cast_expression "(undefined **)(puVar24 + 0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "PTR___gmpn_gcdext_hook_0009d2c0")) (; ";")) (expression_statement "local_54 = iVar22;" (assignment_expression "local_54 = iVar22" (identifier "local_54") (= "=") (identifier "iVar22")) (; ";")) (expression_statement "local_50 = piVar14;" (assignment_expression "local_50 = piVar14" (identifier "local_50") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "local_4c = piVar23;" (assignment_expression "local_4c = piVar23" (identifier "local_4c") (= "=") (identifier "piVar23")) (; ";")) (expression_statement "local_48 = piVar9 + uVar16;" (assignment_expression "local_48 = piVar9 + uVar16" (identifier "local_48") (= "=") (binary_expression "piVar9 + uVar16" (identifier "piVar9") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "*(int ***)(puVar24 + 0x14) = &local_64;" (assignment_expression "*(int ***)(puVar24 + 0x14) = &local_64" (pointer_expression "*(int ***)(puVar24 + 0x14)" (* "*") (cast_expression "(int ***)(puVar24 + 0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);" (assignment_expression "uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" (identifier "uVar16") (= "=") (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (* "*") (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcd_subdiv_step_0009d118"))) () ")")) (argument_list "(param_4,param_6,uVar16,0)" (( "(") (identifier "param_4") (, ",") (identifier "param_6") (, ",") (identifier "uVar16") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (uVar16 == 0) goto LAB_0004f0cc;" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f0cc;" (goto "goto") (statement_identifier "LAB_0004f0cc") (; ";"))) (expression_statement "iVar22 = local_54;" (assignment_expression "iVar22 = local_54" (identifier "iVar22") (= "=") (identifier "local_54")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(599 < (int)uVar16)" (( "(") (binary_expression "599 < (int)uVar16" (number_literal "599") (< "<") (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0004ef08:\n    piVar13 = param_4 + uVar16;" (statement_identifier "LAB_0004ef08") (: ":") (expression_statement "piVar13 = param_4 + uVar16;" (assignment_expression "piVar13 = param_4 + uVar16" (identifier "piVar13") (= "=") (binary_expression "param_4 + uVar16" (identifier "param_4") (+ "+") (identifier "uVar16"))) (; ";"))) (expression_statement "piVar8 = param_6 + uVar16;" (assignment_expression "piVar8 = param_6 + uVar16" (identifier "piVar8") (= "=") (binary_expression "param_6 + uVar16" (identifier "param_6") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" (identifier "uVar5") (= "=") (identifier "uVar16")) (; ";")) (expression_statement "piVar7 = piVar13;" (assignment_expression "piVar7 = piVar13" (identifier "piVar7") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "piVar10 = piVar8;" (assignment_expression "piVar10 = piVar8" (identifier "piVar10") (= "=") (identifier "piVar8")) (; ";")) (while_statement "while( true ) {\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar5 = uVar5 - 1;\n      piVar10 = piVar10 + -1;\n      if ((int)uVar5 < 0) break;\n      piVar12 = piVar7 + -1;\n      piVar7 = piVar7 + -1;\n      if (*piVar12 != *piVar10) goto LAB_0004f274;\n    }" ({ "{") (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((int)uVar5 < 0) break;" (if "if") (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar12 = piVar7 + -1;" (assignment_expression "piVar12 = piVar7 + -1" (identifier "piVar12") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar12 != *piVar10) goto LAB_0004f274;" (if "if") (parenthesized_expression "(*piVar12 != *piVar10)" (( "(") (binary_expression "*piVar12 != *piVar10" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (!= "!=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (goto_statement "goto LAB_0004f274;" (goto "goto") (statement_identifier "LAB_0004f274") (; ";"))) (} "}"))) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar18 = *param_4;\n      if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }\n      *local_90 = iVar18;\n    }" ({ "{") (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" (identifier "iVar18") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (if_statement "if (uVar16 != 1) {\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" (if "if") (parenthesized_expression "(uVar16 != 1)" (( "(") (binary_expression "uVar16 != 1" (identifier "uVar16") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        piVar9 = param_1;\n        piVar8 = param_4 + 1;\n        do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);\n        local_90 = param_1 + (uVar16 - 1);\n      }" ({ "{") (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" (identifier "piVar9") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar8 = param_4 + 1;" (assignment_expression "piVar8 = param_4 + 1" (identifier "piVar8") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        } while (piVar7 != piVar13);" (do "do") (compound_statement "{\n          *piVar9 = iVar18;\n          piVar7 = piVar8 + 1;\n          iVar18 = *piVar8;\n          piVar9 = piVar9 + 1;\n          piVar8 = piVar7;\n        }" ({ "{") (expression_statement "*piVar9 = iVar18;" (assignment_expression "*piVar9 = iVar18" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "piVar7 = piVar8 + 1;" (assignment_expression "piVar7 = piVar8 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar8 + 1" (identifier "piVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar18 = *piVar8;" (assignment_expression "iVar18 = *piVar8" (identifier "iVar18") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" (identifier "piVar8") (= "=") (identifier "piVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar7 != piVar13)" (( "(") (binary_expression "piVar7 != piVar13" (identifier "piVar7") (!= "!=") (identifier "piVar13")) () ")")) (; ";")) (expression_statement "local_90 = param_1 + (uVar16 - 1);" (assignment_expression "local_90 = param_1 + (uVar16 - 1)" (identifier "local_90") (= "=") (binary_expression "param_1 + (uVar16 - 1)" (identifier "param_1") (+ "+") (parenthesized_expression "(uVar16 - 1)" (( "(") (binary_expression "uVar16 - 1" (identifier "uVar16") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*local_90 = iVar18;" (assignment_expression "*local_90 = iVar18" (pointer_expression "*local_90" (* "*") (identifier "local_90")) (= "=") (identifier "iVar18")) (; ";")) (} "}"))) (expression_statement "piVar13 = piVar14 + iVar22;" (assignment_expression "piVar13 = piVar14 + iVar22" (identifier "piVar13") (= "=") (binary_expression "piVar14 + iVar22" (identifier "piVar14") (+ "+") (identifier "iVar22"))) (; ";")) (expression_statement "puVar21 = (uint *)(piVar23 + iVar22);" (assignment_expression "puVar21 = (uint *)(piVar23 + iVar22)" (identifier "puVar21") (= "=") (cast_expression "(uint *)(piVar23 + iVar22)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar23 + iVar22)" (( "(") (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22")) () ")")))) (; ";")) (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" (identifier "iVar18") (= "=") (identifier "iVar22")) (; ";")) (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" (identifier "piVar9") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "puVar19 = puVar21;" (assignment_expression "puVar19 = puVar21" (identifier "puVar19") (= "=") (identifier "puVar21")) (; ";")) (do_statement "do {\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    } while (*puVar1 == *puVar19);" (do "do") (compound_statement "{\n      iVar18 = iVar18 + -1;\n      puVar19 = puVar19 + -1;\n      if (iVar18 < 0) goto LAB_0004efd4;\n      puVar1 = (uint *)(piVar9 + -1);\n      piVar9 = piVar9 + -1;\n    }" ({ "{") (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + -1" (identifier "puVar19") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar18 < 0) goto LAB_0004efd4;" (if "if") (parenthesized_expression "(iVar18 < 0)" (( "(") (binary_expression "iVar18 < 0" (identifier "iVar18") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004efd4;" (goto "goto") (statement_identifier "LAB_0004efd4") (; ";"))) (expression_statement "puVar1 = (uint *)(piVar9 + -1);" (assignment_expression "puVar1 = (uint *)(piVar9 + -1)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(piVar9 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar9 + -1)" (( "(") (binary_expression "piVar9 + -1" (identifier "piVar9") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "piVar9 = piVar9 + -1;" (assignment_expression "piVar9 = piVar9 + -1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + -1" (identifier "piVar9") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 == *puVar19)" (( "(") (binary_expression "*puVar1 == *puVar19" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (== "==") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) () ")")) (; ";")) (if_statement "if (*puVar19 < *puVar1) goto LAB_0004efd4;" (if "if") (parenthesized_expression "(*puVar19 < *puVar1)" (( "(") (binary_expression "*puVar19 < *puVar1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (< "<") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")) (goto_statement "goto LAB_0004efd4;" (goto "goto") (statement_identifier "LAB_0004efd4") (; ";"))) (if_statement "if (iVar22 < 1) {\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }\n    else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" (if "if") (parenthesized_expression "(iVar22 < 1)" (( "(") (binary_expression "iVar22 < 1" (identifier "iVar22") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (iVar22 != 0) goto LAB_0004fb70;\n    }" ({ "{") (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar22 != 0) goto LAB_0004fb70;" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004fb70;" (goto "goto") (statement_identifier "LAB_0004fb70") (; ";"))) (} "}")) (else_clause "else {\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" (else "else") (compound_statement "{\n      iVar18 = iVar22 + -1;\n      if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }\nLAB_0004fb70:\n      iVar6 = *piVar14;\n      piVar9 = param_2;\n      if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }\n      iVar22 = -iVar22;\n      *local_8c = iVar6;\n    }" ({ "{") (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (piVar13[-1] == 0) {\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" (if "if") (parenthesized_expression "(piVar13[-1] == 0)" (( "(") (binary_expression "piVar13[-1] == 0" (subscript_expression "piVar13[-1]" (identifier "piVar13") ([ "[") (number_literal "-1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);\n        iVar18 = iVar18 + -2;\n      }" ({ "{") (do_statement "do {\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        } while (*piVar9 == 0);" (do "do") (compound_statement "{\n          iVar18 = iVar22;\n          iVar22 = iVar18 + -1;\n          if (iVar22 == 0) goto LAB_0004f044;\n          piVar9 = piVar13 + -2;\n          piVar13 = piVar13 + -1;\n        }" ({ "{") (expression_statement "iVar18 = iVar22;" (assignment_expression "iVar18 = iVar22" (identifier "iVar18") (= "=") (identifier "iVar22")) (; ";")) (expression_statement "iVar22 = iVar18 + -1;" (assignment_expression "iVar22 = iVar18 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar22 == 0) goto LAB_0004f044;" (if "if") (parenthesized_expression "(iVar22 == 0)" (( "(") (binary_expression "iVar22 == 0" (identifier "iVar22") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f044;" (goto "goto") (statement_identifier "LAB_0004f044") (; ";"))) (expression_statement "piVar9 = piVar13 + -2;" (assignment_expression "piVar9 = piVar13 + -2" (identifier "piVar9") (= "=") (binary_expression "piVar13 + -2" (identifier "piVar13") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + -1" (identifier "piVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar9 == 0)" (( "(") (binary_expression "*piVar9 == 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar18 = iVar18 + -2;" (assignment_expression "iVar18 = iVar18 + -2" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -2" (identifier "iVar18") (+ "+") (number_literal "-2"))) (; ";")) (} "}"))) (labeled_statement "LAB_0004fb70:\n      iVar6 = *piVar14;" (statement_identifier "LAB_0004fb70") (: ":") (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" (identifier "iVar6") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";"))) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar18 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);\n        local_8c = param_2 + iVar22 + -1;\n      }" ({ "{") (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar18 != 0);" (do "do") (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar6;\n          iVar18 = iVar18 + -1;\n          iVar6 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" ({ "{") (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar9 = iVar6;" (assignment_expression "*piVar9 = iVar6" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = *piVar14;" (assignment_expression "iVar6 = *piVar14" (identifier "iVar6") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" (identifier "local_8c") (= "=") (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" (identifier "param_2") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" (identifier "iVar22") (= "=") (unary_expression "-iVar22" (- "-") (identifier "iVar22"))) (; ";")) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" (* "*") (identifier "local_8c")) (= "=") (identifier "iVar6")) (; ";")) (} "}")))) (goto_statement "goto LAB_0004f044;" (goto "goto") (statement_identifier "LAB_0004f044") (; ";")) (} "}")))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar14;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar14" (pointer_expression "*(int **)(puVar24 + 0x18)" (* "*") (cast_expression "(int **)(puVar24 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar14")) (; ";")) (expression_statement "*(uint *)(puVar24 + 0x14) = param_7;" (assignment_expression "*(uint *)(puVar24 + 0x14) = param_7" (pointer_expression "*(uint *)(puVar24 + 0x14)" (* "*") (cast_expression "(uint *)(puVar24 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "param_7")) (; ";")) (labeled_statement "LAB_0004f4dc:\n  *(int **)(puVar24 + 0x10) = param_6;" (statement_identifier "LAB_0004f4dc") (: ":") (expression_statement "*(int **)(puVar24 + 0x10) = param_6;" (assignment_expression "*(int **)(puVar24 + 0x10) = param_6" (pointer_expression "*(int **)(puVar24 + 0x10)" (* "*") (cast_expression "(int **)(puVar24 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_6")) (; ";"))) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" (identifier "param_7") (= "=") (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,param_2,param_3,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" (* "*") (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcdext_lehmer_n_0009d160"))) () ")")) (argument_list "(param_1,param_2,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (labeled_statement "joined_r0x0004f3e8:\n  while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" (statement_identifier "joined_r0x0004f3e8") (: ":") (while_statement "while( true ) {\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\nLAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;\n    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();\nLAB_0004fc80:\n    iVar6 = 1;\nLAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);\n    *(int *)((int)local_8c + (int)uVar25) = iVar6;\nLAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }\n    *param_3 = iVar22;\n  }" ({ "{") (if_statement "if (local_6c != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_0009d618)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_0009d618" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_0009d618" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_0009d618"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0004f0dc:\n    if (local_2c == *(int *)puVar3) break;" (statement_identifier "LAB_0004f0dc") (: ":") (if_statement "if (local_2c == *(int *)puVar3) break;" (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")))) () ")")) (break_statement "break;" (break "break") (; ";")))) (expression_statement "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();" (assignment_expression "uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)()" (identifier "uVar25") (= "=") (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0009d4d0"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_0004fc80:\n    iVar6 = 1;" (statement_identifier "LAB_0004fc80") (: ":") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";"))) (labeled_statement "LAB_0004f6ec:\n    iVar22 = (int)((ulonglong)uVar25 >> 0x20);" (statement_identifier "LAB_0004f6ec") (: ":") (expression_statement "iVar22 = (int)((ulonglong)uVar25 >> 0x20);" (assignment_expression "iVar22 = (int)((ulonglong)uVar25 >> 0x20)" (identifier "iVar22") (= "=") (cast_expression "(int)((ulonglong)uVar25 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar25 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar25 >> 0x20" (cast_expression "(ulonglong)uVar25" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar25")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";"))) (expression_statement "*(int *)((int)local_8c + (int)uVar25) = iVar6;" (assignment_expression "*(int *)((int)local_8c + (int)uVar25) = iVar6" (pointer_expression "*(int *)((int)local_8c + (int)uVar25)" (* "*") (cast_expression "(int *)((int)local_8c + (int)uVar25)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_8c + (int)uVar25)" (( "(") (binary_expression "(int)local_8c + (int)uVar25" (cast_expression "(int)local_8c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_8c")) (+ "+") (cast_expression "(int)uVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar25"))) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (labeled_statement "LAB_0004f6f8:\n    if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" (statement_identifier "LAB_0004f6f8") (: ":") (if_statement "if (uVar16 != 0) {\n      iVar22 = -iVar22;\n    }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar22 = -iVar22;\n    }" ({ "{") (expression_statement "iVar22 = -iVar22;" (assignment_expression "iVar22 = -iVar22" (identifier "iVar22") (= "=") (unary_expression "-iVar22" (- "-") (identifier "iVar22"))) (; ";")) (} "}")))) (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar22")) (; ";")) (} "}")))) (return_statement "return param_7;" (return "return") (identifier "param_7") (; ";")) (labeled_statement "LAB_0004efd4:\n  uVar5 = puVar21[-1];" (statement_identifier "LAB_0004efd4") (: ":") (expression_statement "uVar5 = puVar21[-1];" (assignment_expression "uVar5 = puVar21[-1]" (identifier "uVar5") (= "=") (subscript_expression "puVar21[-1]" (identifier "puVar21") ([ "[") (number_literal "-1") (] "]"))) (; ";"))) (while_statement "while (uVar5 == 0) {\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" (while "while") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar22 = iVar22 + -1;\n    uVar5 = puVar21[-2];\n    puVar21 = puVar21 + -1;\n  }" ({ "{") (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar5 = puVar21[-2];" (assignment_expression "uVar5 = puVar21[-2]" (identifier "uVar5") (= "=") (subscript_expression "puVar21[-2]" (identifier "puVar21") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "puVar21 = puVar21 + -1;" (assignment_expression "puVar21 = puVar21 + -1" (identifier "puVar21") (= "=") (binary_expression "puVar21 + -1" (identifier "puVar21") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (iVar22 != 0) {\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar18 = iVar22 + -1;\n    iVar6 = *piVar23;\n    piVar14 = param_2;\n    if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }\n    *local_8c = iVar6;\n  }" ({ "{") (expression_statement "iVar18 = iVar22 + -1;" (assignment_expression "iVar18 = iVar22 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" (identifier "iVar6") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "piVar14 = param_2;" (assignment_expression "piVar14 = param_2" (identifier "piVar14") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar18 != 0) {\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);\n      local_8c = param_2 + iVar22 + -1;\n    }" ({ "{") (do_statement "do {\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      } while (iVar18 != 0);" (do "do") (compound_statement "{\n        piVar23 = piVar23 + 1;\n        *piVar14 = iVar6;\n        iVar18 = iVar18 + -1;\n        iVar6 = *piVar23;\n        piVar14 = piVar14 + 1;\n      }" ({ "{") (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar14 = iVar6;" (assignment_expression "*piVar14 = iVar6" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar6 = *piVar23;" (assignment_expression "iVar6 = *piVar23" (identifier "iVar6") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_8c = param_2 + iVar22 + -1;" (assignment_expression "local_8c = param_2 + iVar22 + -1" (identifier "local_8c") (= "=") (binary_expression "param_2 + iVar22 + -1" (binary_expression "param_2 + iVar22" (identifier "param_2") (+ "+") (identifier "iVar22")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*local_8c = iVar6;" (assignment_expression "*local_8c = iVar6" (pointer_expression "*local_8c" (* "*") (identifier "local_8c")) (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (labeled_statement "LAB_0004f044:\n  *param_3 = iVar22;" (statement_identifier "LAB_0004f044") (: ":") (expression_statement "*param_3 = iVar22;" (assignment_expression "*param_3 = iVar22" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar22")) (; ";"))) (expression_statement "param_7 = uVar16;" (assignment_expression "param_7 = uVar16" (identifier "param_7") (= "=") (identifier "uVar16")) (; ";")) (goto_statement "goto joined_r0x0004f3e8;" (goto "goto") (statement_identifier "joined_r0x0004f3e8") (; ";")) (labeled_statement "LAB_0004f274:\n  if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" (statement_identifier "LAB_0004f274") (: ":") (if_statement "if ((*piVar14 != 0) || (iVar22 != 1)) {\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" (if "if") (parenthesized_expression "((*piVar14 != 0) || (iVar22 != 1))" (( "(") (binary_expression "(*piVar14 != 0) || (iVar22 != 1)" (parenthesized_expression "(*piVar14 != 0)" (( "(") (binary_expression "*piVar14 != 0" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar22 != 1)" (( "(") (binary_expression "iVar22 != 1" (identifier "iVar22") (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n    piVar7 = piVar9 + uVar16;\n    piVar10 = piVar7 + uVar16;\n    if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }\n    *(uint *)(puVar24 + 0x14) = uVar16;\n    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;\n    *(int **)(puVar24 + 0x10) = piVar10;\n    param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);\n    iVar18 = local_68;\n    iVar6 = iVar22;\n    if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }\nLAB_0004f338:\n    *param_3 = iVar18;\n    goto joined_r0x0004f3e8;\n  }" ({ "{") (expression_statement "piVar7 = piVar9 + uVar16;" (assignment_expression "piVar7 = piVar9 + uVar16" (identifier "piVar7") (= "=") (binary_expression "piVar9 + uVar16" (identifier "piVar9") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "piVar10 = piVar7 + uVar16;" (assignment_expression "piVar10 = piVar7 + uVar16" (identifier "piVar10") (= "=") (binary_expression "piVar7 + uVar16" (identifier "piVar7") (+ "+") (identifier "uVar16"))) (; ";")) (if_statement "if (uVar16 != 0) {\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar18 = *param_4;\n      iVar6 = *param_6;\n      if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }\n    }" ({ "{") (expression_statement "iVar18 = *param_4;" (assignment_expression "iVar18 = *param_4" (identifier "iVar18") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "iVar6 = *param_6;" (assignment_expression "iVar6 = *param_6" (identifier "iVar6") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (if_statement "if (uVar16 == 1) {\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }\n      else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *piVar7 = iVar18;\n        *piVar10 = iVar6;\n      }" ({ "{") (expression_statement "*piVar7 = iVar18;" (assignment_expression "*piVar7 = iVar18" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "*piVar10 = iVar6;" (assignment_expression "*piVar10 = iVar6" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (identifier "iVar6")) (; ";")) (} "}")) (else_clause "else {\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" (else "else") (compound_statement "{\n        piVar12 = param_4 + 1;\n        piVar15 = piVar7;\n        do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);\n        piVar10[-1] = iVar18;\n        piVar12 = param_6 + 1;\n        piVar15 = piVar10;\n        do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);\n        piVar10[uVar16 - 1] = iVar6;\n      }" ({ "{") (expression_statement "piVar12 = param_4 + 1;" (assignment_expression "piVar12 = param_4 + 1" (identifier "piVar12") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15 = piVar7;" (assignment_expression "piVar15 = piVar7" (identifier "piVar15") (= "=") (identifier "piVar7")) (; ";")) (do_statement "do {\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar13);" (do "do") (compound_statement "{\n          *piVar15 = iVar18;\n          piVar11 = piVar12 + 1;\n          iVar18 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" ({ "{") (expression_statement "*piVar15 = iVar18;" (assignment_expression "*piVar15 = iVar18" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar18 = *piVar12;" (assignment_expression "iVar18 = *piVar12" (identifier "iVar18") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" (identifier "piVar12") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 1" (identifier "piVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar11 != piVar13)" (( "(") (binary_expression "piVar11 != piVar13" (identifier "piVar11") (!= "!=") (identifier "piVar13")) () ")")) (; ";")) (expression_statement "piVar10[-1] = iVar18;" (assignment_expression "piVar10[-1] = iVar18" (subscript_expression "piVar10[-1]" (identifier "piVar10") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "piVar12 = param_6 + 1;" (assignment_expression "piVar12 = param_6 + 1" (identifier "piVar12") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" (identifier "piVar15") (= "=") (identifier "piVar10")) (; ";")) (do_statement "do {\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        } while (piVar11 != piVar8);" (do "do") (compound_statement "{\n          *piVar15 = iVar6;\n          piVar11 = piVar12 + 1;\n          iVar6 = *piVar12;\n          piVar12 = piVar11;\n          piVar15 = piVar15 + 1;\n        }" ({ "{") (expression_statement "*piVar15 = iVar6;" (assignment_expression "*piVar15 = iVar6" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "piVar11 = piVar12 + 1;" (assignment_expression "piVar11 = piVar12 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = *piVar12;" (assignment_expression "iVar6 = *piVar12" (identifier "iVar6") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" (identifier "piVar12") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "piVar15 = piVar15 + 1;" (assignment_expression "piVar15 = piVar15 + 1" (identifier "piVar15") (= "=") (binary_expression "piVar15 + 1" (identifier "piVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar11 != piVar8)" (( "(") (binary_expression "piVar11 != piVar8" (identifier "piVar11") (!= "!=") (identifier "piVar8")) () ")")) (; ";")) (expression_statement "piVar10[uVar16 - 1] = iVar6;" (assignment_expression "piVar10[uVar16 - 1] = iVar6" (subscript_expression "piVar10[uVar16 - 1]" (identifier "piVar10") ([ "[") (binary_expression "uVar16 - 1" (identifier "uVar16") (- "-") (number_literal "1")) (] "]")) (= "=") (identifier "iVar6")) (; ";")) (} "}")))) (} "}"))) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" (* "*") (cast_expression "(uint *)(puVar24 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(int **)(puVar24 + 0x18) = piVar10 + uVar16;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar10 + uVar16" (pointer_expression "*(int **)(puVar24 + 0x18)" (* "*") (cast_expression "(int **)(puVar24 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "piVar10 + uVar16" (identifier "piVar10") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "*(int **)(puVar24 + 0x10) = piVar10;" (assignment_expression "*(int **)(puVar24 + 0x10) = piVar10" (pointer_expression "*(int **)(puVar24 + 0x10)" (* "*") (cast_expression "(int **)(puVar24 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar10")) (; ";")) (expression_statement "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);" (assignment_expression "param_7 = (*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" (identifier "param_7") (= "=") (call_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" (* "*") (cast_expression "(code *)PTR___gmpn_gcdext_lehmer_n_0009d160" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcdext_lehmer_n_0009d160"))) () ")")) (argument_list "(param_1,piVar9,&local_68,piVar7)" (( "(") (identifier "param_1") (, ",") (identifier "piVar9") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (identifier "piVar7") () ")")))) (; ";")) (expression_statement "iVar18 = local_68;" (assignment_expression "iVar18 = local_68" (identifier "iVar18") (= "=") (identifier "local_68")) (; ";")) (expression_statement "iVar6 = iVar22;" (assignment_expression "iVar6 = iVar22" (identifier "iVar6") (= "=") (identifier "iVar22")) (; ";")) (if_statement "if (iVar22 < 1) {\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }\n    else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" (if "if") (parenthesized_expression "(iVar22 < 1)" (( "(") (binary_expression "iVar22 < 1" (identifier "iVar22") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      if (local_68 != 0) goto LAB_0004f508;\n      if (iVar22 != 0) goto LAB_0004f480;\n    }" ({ "{") (if_statement "if (local_68 != 0) goto LAB_0004f508;" (if "if") (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f508;" (goto "goto") (statement_identifier "LAB_0004f508") (; ";"))) (if_statement "if (iVar22 != 0) goto LAB_0004f480;" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f480;" (goto "goto") (statement_identifier "LAB_0004f480") (; ";"))) (} "}")) (else_clause "else {\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" (else "else") (compound_statement "{\n      if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }\n      if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }\nLAB_0004f480:\n      iVar22 = iVar6 + -1;\n      iVar20 = *piVar14;\n      piVar9 = param_2;\n      if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }\n      iVar18 = -iVar6;\n      *local_8c = iVar20;\n    }" ({ "{") (if_statement "if (piVar14[iVar22 + -1] == 0) {\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" (if "if") (parenthesized_expression "(piVar14[iVar22 + -1] == 0)" (( "(") (binary_expression "piVar14[iVar22 + -1] == 0" (subscript_expression "piVar14[iVar22 + -1]" (identifier "piVar14") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        piVar10 = piVar14 + iVar22;\n        do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);\n      }" ({ "{") (expression_statement "piVar10 = piVar14 + iVar22;" (assignment_expression "piVar10 = piVar14 + iVar22" (identifier "piVar10") (= "=") (binary_expression "piVar14 + iVar22" (identifier "piVar14") (+ "+") (identifier "iVar22"))) (; ";")) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        } while (*piVar12 == 0);" (do "do") (compound_statement "{\n          iVar6 = iVar6 + -1;\n          if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }\n          piVar12 = piVar10 + -2;\n          piVar10 = piVar10 + -1;\n        }" ({ "{") (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar6 == 0) {\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (local_68 == 0) goto LAB_0004f338;\n            goto LAB_0004f508;\n          }" ({ "{") (if_statement "if (local_68 == 0) goto LAB_0004f338;" (if "if") (parenthesized_expression "(local_68 == 0)" (( "(") (binary_expression "local_68 == 0" (identifier "local_68") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f338;" (goto "goto") (statement_identifier "LAB_0004f338") (; ";"))) (goto_statement "goto LAB_0004f508;" (goto "goto") (statement_identifier "LAB_0004f508") (; ";")) (} "}"))) (expression_statement "piVar12 = piVar10 + -2;" (assignment_expression "piVar12 = piVar10 + -2" (identifier "piVar12") (= "=") (binary_expression "piVar10 + -2" (identifier "piVar10") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar10 = piVar10 + -1;" (assignment_expression "piVar10 = piVar10 + -1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + -1" (identifier "piVar10") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar12 == 0)" (( "(") (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (local_68 != 0) {\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" (if "if") (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;\n        iVar20 = local_68;\n        if (local_68 < 0) {\n          iVar20 = -local_68;\n        }\n        uVar5 = uVar16;\n        if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }\n        iVar20 = iVar20 + uVar5;\n        if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }\nLAB_0004f5f0:\n        bVar2 = local_68 < 1;\n        if (bVar2) {\n          local_68 = -local_68;\n        }\n        iVar20 = local_68;\n        uVar16 = (uint)bVar2;\n        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }\n        if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }\n        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);\n        if (iVar18 < 1) goto LAB_0004f6f8;\n        if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }\n        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);\n        if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }\nLAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);\n        goto LAB_0004f6ec;\n      }" ({ "{") (labeled_statement "LAB_0004f508:\n        piVar10 = piVar7 + uVar16 + 1;" (statement_identifier "LAB_0004f508") (: ":") (expression_statement "piVar10 = piVar7 + uVar16 + 1;" (assignment_expression "piVar10 = piVar7 + uVar16 + 1" (identifier "piVar10") (= "=") (binary_expression "piVar7 + uVar16 + 1" (binary_expression "piVar7 + uVar16" (identifier "piVar7") (+ "+") (identifier "uVar16")) (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" (identifier "iVar20") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (local_68 < 0) {\n          iVar20 = -local_68;\n        }" (if "if") (parenthesized_expression "(local_68 < 0)" (( "(") (binary_expression "local_68 < 0" (identifier "local_68") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          iVar20 = -local_68;\n        }" ({ "{") (expression_statement "iVar20 = -local_68;" (assignment_expression "iVar20 = -local_68" (identifier "iVar20") (= "=") (unary_expression "-local_68" (- "-") (identifier "local_68"))) (; ";")) (} "}"))) (expression_statement "uVar5 = uVar16;" (assignment_expression "uVar5 = uVar16" (identifier "uVar5") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if ((int)uVar16 < 1) {\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }\n        else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" (if "if") (parenthesized_expression "((int)uVar16 < 1)" (( "(") (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);\n        }" ({ "{") (labeled_statement "LAB_0004f550:\n          *(uint *)(puVar24 + 0x10) = uVar5;" (statement_identifier "LAB_0004f550") (: ":") (expression_statement "*(uint *)(puVar24 + 0x10) = uVar5;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar5" (pointer_expression "*(uint *)(puVar24 + 0x10)" (* "*") (cast_expression "(uint *)(puVar24 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar5")) (; ";"))) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar10,piVar9,iVar20,param_4)" (( "(") (identifier "piVar10") (, ",") (identifier "piVar9") (, ",") (identifier "iVar20") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" (else "else") (compound_statement "{\n          iVar17 = piVar13[-1];\n          while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }\n          if ((int)uVar5 < iVar20) goto LAB_0004f550;\n          *(int *)(puVar24 + 0x10) = iVar20;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);\n        }" ({ "{") (expression_statement "iVar17 = piVar13[-1];" (assignment_expression "iVar17 = piVar13[-1]" (identifier "iVar17") (= "=") (subscript_expression "piVar13[-1]" (identifier "piVar13") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (while_statement "while (iVar17 == 0) {\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" (while "while") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar5 = uVar5 - 1;\n            if (uVar5 == 0) goto LAB_0004f550;\n            iVar17 = piVar13[-2];\n            piVar13 = piVar13 + -1;\n          }" ({ "{") (expression_statement "uVar5 = uVar5 - 1;" (assignment_expression "uVar5 = uVar5 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar5 == 0) goto LAB_0004f550;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f550;" (goto "goto") (statement_identifier "LAB_0004f550") (; ";"))) (expression_statement "iVar17 = piVar13[-2];" (assignment_expression "iVar17 = piVar13[-2]" (identifier "iVar17") (= "=") (subscript_expression "piVar13[-2]" (identifier "piVar13") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + -1" (identifier "piVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if ((int)uVar5 < iVar20) goto LAB_0004f550;" (if "if") (parenthesized_expression "((int)uVar5 < iVar20)" (( "(") (binary_expression "(int)uVar5 < iVar20" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (identifier "iVar20")) () ")")) (goto_statement "goto LAB_0004f550;" (goto "goto") (statement_identifier "LAB_0004f550") (; ";"))) (expression_statement "*(int *)(puVar24 + 0x10) = iVar20;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar20" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar10,param_4,uVar5,piVar9)" (( "(") (identifier "piVar10") (, ",") (identifier "param_4") (, ",") (identifier "uVar5") (, ",") (identifier "piVar9") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar20 = iVar20 + uVar5;" (assignment_expression "iVar20 = iVar20 + uVar5" (identifier "iVar20") (= "=") (binary_expression "iVar20 + uVar5" (identifier "iVar20") (+ "+") (identifier "uVar5"))) (; ";")) (if_statement "if (iVar18 < 1) {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }\n        else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" (if "if") (parenthesized_expression "(iVar18 < 1)" (( "(") (binary_expression "iVar18 < 1" (identifier "iVar18") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);\n          iVar18 = iVar20 + 1;\nLAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }\n          *(uint *)(puVar24 + 0x10) = uVar16;\n          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);\n          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);\n        }" ({ "{") (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" (( "(") (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" (( "(") (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (( "(") (comma_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" (identifier "iVar18") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_0009d334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_0009d334"))) () ")")) (argument_list "(piVar10,piVar10,param_1,param_7)" (( "(") (identifier "piVar10") (, ",") (identifier "piVar10") (, ",") (identifier "param_1") (, ",") (identifier "param_7") () ")")))) (, ",") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((int)param_7 < iVar20)" (( "(") (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (identifier "iVar20")) () ")"))) () ")")) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + 1;\n            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" ({ "{") (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" (identifier "piVar13") (= "=") (binary_expression "piVar10 + param_7" (identifier "piVar10") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" (identifier "iVar18") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "*piVar13 = iVar18 + 1;" (assignment_expression "*piVar13 = iVar18 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" (if "if") (parenthesized_expression "((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20))" (( "(") (binary_expression "(iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 + 1 == 0)" (( "(") (binary_expression "iVar18 + 1 == 0" (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((int)(param_7 + 1) < iVar20)" (( "(") (binary_expression "(int)(param_7 + 1) < iVar20" (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")) () ")"))) (< "<") (identifier "iVar20")) () ")"))) () ")")) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1] + 1;\n              piVar10[param_7 + 1] = iVar17;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }\n            }" ({ "{") (expression_statement "iVar17 = piVar10[param_7 + 1] + 1;" (assignment_expression "iVar17 = piVar10[param_7 + 1] + 1" (identifier "iVar17") (= "=") (binary_expression "piVar10[param_7 + 1] + 1" (subscript_expression "piVar10[param_7 + 1]" (identifier "piVar10") ([ "[") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1")) (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10[param_7 + 1] = iVar17;" (assignment_expression "piVar10[param_7 + 1] = iVar17" (subscript_expression "piVar10[param_7 + 1]" (identifier "piVar10") ([ "[") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "iVar17")) (; ";")) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar18 = param_7 + 2" (identifier "iVar18") (= "=") (binary_expression "param_7 + 2" (identifier "param_7") (+ "+") (number_literal "2"))) (; ";") (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" (( "(") (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar20 != iVar18)" (( "(") (binary_expression "iVar20 != iVar18" (identifier "iVar20") (!= "!=") (identifier "iVar18")) () ")"))) () ")")) (; ";") (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                iVar17 = piVar13[2] + 1;\n                piVar13[2] = iVar17;\n                piVar13 = piVar13 + 1;\n              }" ({ "{") (expression_statement "iVar17 = piVar13[2] + 1;" (assignment_expression "iVar17 = piVar13[2] + 1" (identifier "iVar17") (= "=") (binary_expression "piVar13[2] + 1" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13[2] = iVar17;" (assignment_expression "piVar13[2] = iVar17" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);" (assignment_expression "iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" (identifier "iVar20") (= "=") (binary_expression "iVar20 - (uint)(piVar10[iVar20 + -1] == 0)" (identifier "iVar20") (- "-") (call_expression "(uint)(piVar10[iVar20 + -1] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar10[iVar20 + -1] == 0)" (( "(") (binary_expression "piVar10[iVar20 + -1] == 0" (subscript_expression "piVar10[iVar20 + -1]" (identifier "piVar10") ([ "[") (binary_expression "iVar20 + -1" (identifier "iVar20") (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0004f728:\n          if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" (statement_identifier "LAB_0004f728") (: ":") (if_statement "if (0 < (int)uVar16) {\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" (if "if") (parenthesized_expression "(0 < (int)uVar16)" (( "(") (binary_expression "0 < (int)uVar16" (number_literal "0") (< "<") (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16"))) () ")")) (compound_statement "{\n            iVar17 = piVar8[-1];\n            while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }\n          }" ({ "{") (expression_statement "iVar17 = piVar8[-1];" (assignment_expression "iVar17 = piVar8[-1]" (identifier "iVar17") (= "=") (subscript_expression "piVar8[-1]" (identifier "piVar8") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (while_statement "while (iVar17 == 0) {\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" (while "while") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar16 = uVar16 - 1;\n              if (uVar16 == 0) break;\n              iVar17 = piVar8[-2];\n              piVar8 = piVar8 + -1;\n            }" ({ "{") (expression_statement "uVar16 = uVar16 - 1;" (assignment_expression "uVar16 = uVar16 - 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 - 1" (identifier "uVar16") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar16 == 0) break;" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar17 = piVar8[-2];" (assignment_expression "iVar17 = piVar8[-2]" (identifier "iVar17") (= "=") (subscript_expression "piVar8[-2]" (identifier "piVar8") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "piVar8 = piVar8 + -1;" (assignment_expression "piVar8 = piVar8 + -1" (identifier "piVar8") (= "=") (binary_expression "piVar8 + -1" (identifier "piVar8") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(uint *)(puVar24 + 0x10) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x10) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x10)" (* "*") (cast_expression "(uint *)(puVar24 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);" (call_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6)" (parenthesized_expression "(*(code *)PTR___gmpn_divexact_0009d4b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_divexact_0009d4b4" (* "*") (cast_expression "(code *)PTR___gmpn_divexact_0009d4b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_divexact_0009d4b4"))) () ")")) (argument_list "(piVar7,piVar10,iVar20,param_6)" (( "(") (identifier "piVar7") (, ",") (identifier "piVar10") (, ",") (identifier "iVar20") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);" (assignment_expression "iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (identifier "iVar18") (= "=") (binary_expression "(iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(iVar18 - uVar16)" (( "(") (binary_expression "iVar18 - uVar16" (identifier "iVar18") (- "-") (identifier "uVar16")) () ")")) (- "-") (call_expression "(uint)(piVar7[(iVar18 - uVar16) + -1] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar7[(iVar18 - uVar16) + -1] == 0)" (( "(") (binary_expression "piVar7[(iVar18 - uVar16) + -1] == 0" (subscript_expression "piVar7[(iVar18 - uVar16) + -1]" (identifier "piVar7") ([ "[") (binary_expression "(iVar18 - uVar16) + -1" (parenthesized_expression "(iVar18 - uVar16)" (( "(") (binary_expression "iVar18 - uVar16" (identifier "iVar18") (- "-") (identifier "uVar16")) () ")")) (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" (else "else") (compound_statement "{\n          if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }\n          if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }\n          iVar18 = 0;\n          if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }\n        }" ({ "{") (if_statement "if (((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)) {\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20))" (( "(") (binary_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)) && ((int)param_7 < iVar20)" (parenthesized_expression "((param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0))" (( "(") (binary_expression "(param_7 != 0) &&\n              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0)" (( "(") (comma_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),\n              iVar18 != 0" (assignment_expression "iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" (identifier "iVar18") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_0009d514)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sub_n_0009d514" (* "*") (cast_expression "(code *)PTR___gmpn_sub_n_0009d514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_0009d514"))) () ")")) (argument_list "(piVar10,piVar10,param_1,param_7)" (( "(") (identifier "piVar10") (, ",") (identifier "piVar10") (, ",") (identifier "param_1") (, ",") (identifier "param_7") () ")")))) (, ",") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((int)param_7 < iVar20)" (( "(") (binary_expression "(int)param_7 < iVar20" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (identifier "iVar20")) () ")"))) () ")")) (compound_statement "{\n            piVar13 = piVar10 + param_7;\n            iVar18 = *piVar13;\n            *piVar13 = iVar18 + -1;\n            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }\n          }" ({ "{") (expression_statement "piVar13 = piVar10 + param_7;" (assignment_expression "piVar13 = piVar10 + param_7" (identifier "piVar13") (= "=") (binary_expression "piVar10 + param_7" (identifier "piVar10") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "iVar18 = *piVar13;" (assignment_expression "iVar18 = *piVar13" (identifier "iVar18") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "*piVar13 = iVar18 + -1;" (assignment_expression "*piVar13 = iVar18 + -1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" (if "if") (parenthesized_expression "((iVar18 == 0) && ((int)(param_7 + 1) < iVar20))" (( "(") (binary_expression "(iVar18 == 0) && ((int)(param_7 + 1) < iVar20)" (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((int)(param_7 + 1) < iVar20)" (( "(") (binary_expression "(int)(param_7 + 1) < iVar20" (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")) () ")"))) (< "<") (identifier "iVar20")) () ")"))) () ")")) (compound_statement "{\n              iVar17 = piVar10[param_7 + 1];\n              piVar10[param_7 + 1] = iVar17 + -1;\n              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }\n            }" ({ "{") (expression_statement "iVar17 = piVar10[param_7 + 1];" (assignment_expression "iVar17 = piVar10[param_7 + 1]" (identifier "iVar17") (= "=") (subscript_expression "piVar10[param_7 + 1]" (identifier "piVar10") ([ "[") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "piVar10[param_7 + 1] = iVar17 + -1;" (assignment_expression "piVar10[param_7 + 1] = iVar17 + -1" (subscript_expression "piVar10[param_7 + 1]" (identifier "piVar10") ([ "[") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (for_statement "for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" (for "for") (( "(") (assignment_expression "iVar18 = param_7 + 2" (identifier "iVar18") (= "=") (binary_expression "param_7 + 2" (identifier "param_7") (+ "+") (number_literal "2"))) (; ";") (parenthesized_expression "(iVar17 == 0 && (iVar20 != iVar18))" (( "(") (binary_expression "iVar17 == 0 && (iVar20 != iVar18)" (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar20 != iVar18)" (( "(") (binary_expression "iVar20 != iVar18" (identifier "iVar20") (!= "!=") (identifier "iVar18")) () ")"))) () ")")) (; ";") (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                iVar17 = piVar13[2];\n                piVar13[2] = iVar17 + -1;\n                piVar13 = piVar13 + 1;\n              }" ({ "{") (expression_statement "iVar17 = piVar13[2];" (assignment_expression "iVar17 = piVar13[2]" (identifier "iVar17") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar13[2] = iVar17 + -1;" (assignment_expression "piVar13[2] = iVar17 + -1" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar17 + -1" (identifier "iVar17") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (0 < iVar20) {\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" (if "if") (parenthesized_expression "(0 < iVar20)" (( "(") (binary_expression "0 < iVar20" (number_literal "0") (< "<") (identifier "iVar20")) () ")")) (compound_statement "{\n            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;\n            piVar13 = piVar10 + iVar20;\n            do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);\n            goto LAB_0004f728;\n          }" ({ "{") (if_statement "if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;" (if "if") (parenthesized_expression "(piVar10[iVar20 + -1] != 0)" (( "(") (binary_expression "piVar10[iVar20 + -1] != 0" (subscript_expression "piVar10[iVar20 + -1]" (identifier "piVar10") ([ "[") (binary_expression "iVar20 + -1" (identifier "iVar20") (+ "+") (number_literal "-1")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f720;" (goto "goto") (statement_identifier "LAB_0004f720") (; ";"))) (expression_statement "piVar13 = piVar10 + iVar20;" (assignment_expression "piVar13 = piVar10 + iVar20" (identifier "piVar13") (= "=") (binary_expression "piVar10 + iVar20" (identifier "piVar10") (+ "+") (identifier "iVar20"))) (; ";")) (do_statement "do {\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            } while (*piVar12 == 0);" (do "do") (compound_statement "{\n              iVar18 = iVar20;\n              iVar20 = iVar18 + -1;\n              if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }\n              piVar12 = piVar13 + -2;\n              piVar13 = piVar13 + -1;\n            }" ({ "{") (expression_statement "iVar18 = iVar20;" (assignment_expression "iVar18 = iVar20" (identifier "iVar18") (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar20 = iVar18 + -1;" (assignment_expression "iVar20 = iVar18 + -1" (identifier "iVar20") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar20 == 0) {\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar18 = 0;\n                goto LAB_0004f5f0;\n              }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004f5f0;" (goto "goto") (statement_identifier "LAB_0004f5f0") (; ";")) (} "}"))) (expression_statement "piVar12 = piVar13 + -2;" (assignment_expression "piVar12 = piVar13 + -2" (identifier "piVar12") (= "=") (binary_expression "piVar13 + -2" (identifier "piVar13") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + -1" (identifier "piVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar12 == 0)" (( "(") (binary_expression "*piVar12 == 0" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_0004f728;" (goto "goto") (statement_identifier "LAB_0004f728") (; ";")) (} "}"))) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar20 != 0) {\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004f720:\n            iVar18 = iVar20 + 1;\n            goto LAB_0004f728;\n          }" ({ "{") (labeled_statement "LAB_0004f720:\n            iVar18 = iVar20 + 1;" (statement_identifier "LAB_0004f720") (: ":") (expression_statement "iVar18 = iVar20 + 1;" (assignment_expression "iVar18 = iVar20 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";"))) (goto_statement "goto LAB_0004f728;" (goto "goto") (statement_identifier "LAB_0004f728") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0004f5f0:\n        bVar2 = local_68 < 1;" (statement_identifier "LAB_0004f5f0") (: ":") (expression_statement "bVar2 = local_68 < 1;" (assignment_expression "bVar2 = local_68 < 1" (identifier "bVar2") (= "=") (binary_expression "local_68 < 1" (identifier "local_68") (< "<") (number_literal "1"))) (; ";"))) (if_statement "if (bVar2) {\n          local_68 = -local_68;\n        }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n          local_68 = -local_68;\n        }" ({ "{") (expression_statement "local_68 = -local_68;" (assignment_expression "local_68 = -local_68" (identifier "local_68") (= "=") (unary_expression "-local_68" (- "-") (identifier "local_68"))) (; ";")) (} "}"))) (expression_statement "iVar20 = local_68;" (assignment_expression "iVar20 = local_68" (identifier "iVar20") (= "=") (identifier "local_68")) (; ";")) (expression_statement "uVar16 = (uint)bVar2;" (assignment_expression "uVar16 = (uint)bVar2" (identifier "uVar16") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (if_statement "if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" (if "if") (parenthesized_expression "((0 < iVar22) && (piVar23[iVar22 + -1] == 0))" (( "(") (binary_expression "(0 < iVar22) && (piVar23[iVar22 + -1] == 0)" (parenthesized_expression "(0 < iVar22)" (( "(") (binary_expression "0 < iVar22" (number_literal "0") (< "<") (identifier "iVar22")) () ")")) (&& "&&") (parenthesized_expression "(piVar23[iVar22 + -1] == 0)" (( "(") (binary_expression "piVar23[iVar22 + -1] == 0" (subscript_expression "piVar23[iVar22 + -1]" (identifier "piVar23") ([ "[") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          piVar13 = piVar23 + iVar22;\n          do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);\n        }" ({ "{") (expression_statement "piVar13 = piVar23 + iVar22;" (assignment_expression "piVar13 = piVar23 + iVar22" (identifier "piVar13") (= "=") (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22"))) (; ";")) (do_statement "do {\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          } while (*piVar8 == 0);" (do "do") (compound_statement "{\n            iVar22 = iVar22 + -1;\n            if (iVar22 == 0) break;\n            piVar8 = piVar13 + -2;\n            piVar13 = piVar13 + -1;\n          }" ({ "{") (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar22 == 0) break;" (if "if") (parenthesized_expression "(iVar22 == 0)" (( "(") (binary_expression "iVar22 == 0" (identifier "iVar22") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar8 = piVar13 + -2;" (assignment_expression "piVar8 = piVar13 + -2" (identifier "piVar8") (= "=") (binary_expression "piVar13 + -2" (identifier "piVar13") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + -1" (identifier "piVar13") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar8 == 0)" (( "(") (binary_expression "*piVar8 == 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar22 < local_68) {\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" (if "if") (parenthesized_expression "(iVar22 < local_68)" (( "(") (binary_expression "iVar22 < local_68" (identifier "iVar22") (< "<") (identifier "local_68")) () ")")) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar22;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);\n        }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar22;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar22" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar22")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(param_2,piVar9,iVar20,piVar23)" (( "(") (identifier "param_2") (, ",") (identifier "piVar9") (, ",") (identifier "iVar20") (, ",") (identifier "piVar23") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" (else "else") (compound_statement "{\n          *(int *)(puVar24 + 0x10) = local_68;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);\n        }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = local_68;" (assignment_expression "*(int *)(puVar24 + 0x10) = local_68" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "local_68")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(param_2,piVar23,iVar22,piVar9)" (( "(") (identifier "param_2") (, ",") (identifier "piVar23") (, ",") (identifier "iVar22") (, ",") (identifier "piVar9") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);" (assignment_expression "iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" (identifier "iVar22") (= "=") (binary_expression "(iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(iVar22 + local_68)" (( "(") (binary_expression "iVar22 + local_68" (identifier "iVar22") (+ "+") (identifier "local_68")) () ")")) (- "-") (call_expression "(uint)(param_2[iVar22 + local_68 + -1] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2[iVar22 + local_68 + -1] == 0)" (( "(") (binary_expression "param_2[iVar22 + local_68 + -1] == 0" (subscript_expression "param_2[iVar22 + local_68 + -1]" (identifier "param_2") ([ "[") (binary_expression "iVar22 + local_68 + -1" (binary_expression "iVar22 + local_68" (identifier "iVar22") (+ "+") (identifier "local_68")) (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (if_statement "if (iVar18 < 1) goto LAB_0004f6f8;" (if "if") (parenthesized_expression "(iVar18 < 1)" (( "(") (binary_expression "iVar18 < 1" (identifier "iVar18") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0004f6f8;" (goto "goto") (statement_identifier "LAB_0004f6f8") (; ";"))) (if_statement "if (iVar6 < iVar18) {\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }\n        else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" (if "if") (parenthesized_expression "(iVar6 < iVar18)" (( "(") (binary_expression "iVar6 < iVar18" (identifier "iVar6") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar6;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);\n        }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar6;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar6" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar23,piVar7,iVar18,piVar14)" (( "(") (identifier "piVar23") (, ",") (identifier "piVar7") (, ",") (identifier "iVar18") (, ",") (identifier "piVar14") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" (else "else") (compound_statement "{\n          *(int *)(puVar24 + 0x10) = iVar18;\n          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);\n        }" ({ "{") (expression_statement "*(int *)(puVar24 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar24 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar24 + 0x10)" (* "*") (cast_expression "(int *)(puVar24 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x10)" (( "(") (binary_expression "puVar24 + 0x10" (identifier "puVar24") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);" (call_expression "(*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_0009d2b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_0009d2b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_0009d2b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_0009d2b4"))) () ")")) (argument_list "(piVar23,piVar14,iVar6,piVar7)" (( "(") (identifier "piVar23") (, ",") (identifier "piVar14") (, ",") (identifier "iVar6") (, ",") (identifier "piVar7") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);" (assignment_expression "iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (identifier "iVar18") (= "=") (binary_expression "(iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(iVar18 + iVar6)" (( "(") (binary_expression "iVar18 + iVar6" (identifier "iVar18") (+ "+") (identifier "iVar6")) () ")")) (- "-") (call_expression "(uint)(piVar23[iVar18 + iVar6 + -1] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar23[iVar18 + iVar6 + -1] == 0)" (( "(") (binary_expression "piVar23[iVar18 + iVar6 + -1] == 0" (subscript_expression "piVar23[iVar18 + iVar6 + -1]" (identifier "piVar23") ([ "[") (binary_expression "iVar18 + iVar6 + -1" (binary_expression "iVar18 + iVar6" (identifier "iVar18") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-1")) (] "]")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (if_statement "if (iVar22 < iVar18) {\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }\n        else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" (if "if") (parenthesized_expression "(iVar22 < iVar18)" (( "(") (binary_expression "iVar22 < iVar18" (identifier "iVar22") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n          if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }\n          bVar2 = iVar22 < iVar18;\n          if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }\n          iVar6 = 0;\n          iVar22 = iVar18;\n        }" ({ "{") (if_statement "if (iVar22 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);\n            if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }\n            piVar9 = piVar23 + iVar22;\n            piVar14 = param_2 + iVar22;\n            while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }\n          }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_0009d334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_0009d334"))) () ")")) (argument_list "(param_2,piVar23,param_2,iVar22)" (( "(") (identifier "param_2") (, ",") (identifier "piVar23") (, ",") (identifier "param_2") (, ",") (identifier "iVar22") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }\n              bVar2 = iVar22 < iVar18;\n              goto LAB_0004fa3c;\n            }" ({ "{") (if_statement "if (param_2 == piVar23) {\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" (if "if") (parenthesized_expression "(param_2 == piVar23)" (( "(") (binary_expression "param_2 == piVar23" (identifier "param_2") (== "==") (identifier "piVar23")) () ")")) (compound_statement "{\n                uVar25 = CONCAT44(iVar18,iVar18 * 4);\n                iVar6 = 0;\n                goto LAB_0004f6ec;\n              }" ({ "{") (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar18,iVar18 * 4)" (identifier "CONCAT44") (argument_list "(iVar18,iVar18 * 4)" (( "(") (identifier "iVar18") (, ",") (binary_expression "iVar18 * 4" (identifier "iVar18") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004f6ec;" (goto "goto") (statement_identifier "LAB_0004f6ec") (; ";")) (} "}"))) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" (identifier "bVar2") (= "=") (binary_expression "iVar22 < iVar18" (identifier "iVar22") (< "<") (identifier "iVar18"))) (; ";")) (goto_statement "goto LAB_0004fa3c;" (goto "goto") (statement_identifier "LAB_0004fa3c") (; ";")) (} "}"))) (expression_statement "piVar9 = piVar23 + iVar22;" (assignment_expression "piVar9 = piVar23 + iVar22" (identifier "piVar9") (= "=") (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22"))) (; ";")) (expression_statement "piVar14 = param_2 + iVar22;" (assignment_expression "piVar14 = param_2 + iVar22" (identifier "piVar14") (= "=") (binary_expression "param_2 + iVar22" (identifier "param_2") (+ "+") (identifier "iVar22"))) (; ";")) (while_statement "while( true ) {\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              iVar20 = iVar22;\n              iVar6 = *piVar9;\n              iVar22 = iVar20 + 1;\n              *piVar14 = iVar6 + 1;\n              if (iVar6 + 1 != 0) break;\n              piVar9 = piVar9 + 1;\n              piVar14 = piVar14 + 1;\n              if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }\n            }" ({ "{") (expression_statement "iVar20 = iVar22;" (assignment_expression "iVar20 = iVar22" (identifier "iVar20") (= "=") (identifier "iVar22")) (; ";")) (expression_statement "iVar6 = *piVar9;" (assignment_expression "iVar6 = *piVar9" (identifier "iVar6") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iVar22 = iVar20 + 1;" (assignment_expression "iVar22 = iVar20 + 1" (identifier "iVar22") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar14 = iVar6 + 1;" (assignment_expression "*piVar14 = iVar6 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 + 1 != 0) break;" (if "if") (parenthesized_expression "(iVar6 + 1 != 0)" (( "(") (binary_expression "iVar6 + 1 != 0" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar18 == iVar22) {\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" (if "if") (parenthesized_expression "(iVar18 == iVar22)" (( "(") (binary_expression "iVar18 == iVar22" (identifier "iVar18") (== "==") (identifier "iVar22")) () ")")) (compound_statement "{\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);\n                goto LAB_0004f6ec;\n              }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar20 + 2,iVar18 * 4)" (identifier "CONCAT44") (argument_list "(iVar20 + 2,iVar18 * 4)" (( "(") (binary_expression "iVar20 + 2" (identifier "iVar20") (+ "+") (number_literal "2")) (, ",") (binary_expression "iVar18 * 4" (identifier "iVar18") (* "*") (number_literal "4")) () ")")))) (; ";")) (goto_statement "goto LAB_0004f6ec;" (goto "goto") (statement_identifier "LAB_0004f6ec") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "bVar2 = iVar22 < iVar18;" (assignment_expression "bVar2 = iVar22 < iVar18" (identifier "bVar2") (= "=") (binary_expression "iVar22 < iVar18" (identifier "iVar22") (< "<") (identifier "iVar18"))) (; ";")) (if_statement "if ((param_2 != piVar23) && (bVar2)) {\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" (if "if") (parenthesized_expression "((param_2 != piVar23) && (bVar2))" (( "(") (binary_expression "(param_2 != piVar23) && (bVar2)" (parenthesized_expression "(param_2 != piVar23)" (( "(") (binary_expression "param_2 != piVar23" (identifier "param_2") (!= "!=") (identifier "piVar23")) () ")")) (&& "&&") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")"))) () ")")) (compound_statement "{\nLAB_0004fa3c:\n            iVar6 = 4;\n            if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }\n            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);\n            iVar6 = 0;\n            uVar25 = CONCAT44(iVar18,iVar18 * 4);\n            goto LAB_0004f6ec;\n          }" ({ "{") (labeled_statement "LAB_0004fa3c:\n            iVar6 = 4;" (statement_identifier "LAB_0004fa3c") (: ":") (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" (identifier "iVar6") (= "=") (number_literal "4")) (; ";"))) (if_statement "if (bVar2) {\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n              iVar6 = (iVar18 - iVar22) * 4;\n            }" ({ "{") (expression_statement "iVar6 = (iVar18 - iVar22) * 4;" (assignment_expression "iVar6 = (iVar18 - iVar22) * 4" (identifier "iVar6") (= "=") (binary_expression "(iVar18 - iVar22) * 4" (parenthesized_expression "(iVar18 - iVar22)" (( "(") (binary_expression "iVar18 - iVar22" (identifier "iVar18") (- "-") (identifier "iVar22")) () ")")) (* "*") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);" (call_expression "(*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6)" (parenthesized_expression "(*(code *)PTR_memcpy_0009d544)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0009d544" (* "*") (cast_expression "(code *)PTR_memcpy_0009d544" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0009d544"))) () ")")) (argument_list "(param_2 + iVar22,piVar23 + iVar22,iVar6)" (( "(") (binary_expression "param_2 + iVar22" (identifier "param_2") (+ "+") (identifier "iVar22")) (, ",") (binary_expression "piVar23 + iVar22" (identifier "piVar23") (+ "+") (identifier "iVar22")) (, ",") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar25 = CONCAT44(iVar18,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar18,iVar18 * 4)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar18,iVar18 * 4)" (identifier "CONCAT44") (argument_list "(iVar18,iVar18 * 4)" (( "(") (identifier "iVar18") (, ",") (binary_expression "iVar18 * 4" (identifier "iVar18") (* "*") (number_literal "4")) () ")")))) (; ";")) (goto_statement "goto LAB_0004f6ec;" (goto "goto") (statement_identifier "LAB_0004f6ec") (; ";")) (} "}"))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar22 = iVar18;" (assignment_expression "iVar22 = iVar18" (identifier "iVar22") (= "=") (identifier "iVar18")) (; ";")) (} "}")) (else_clause "else {\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" (else "else") (compound_statement "{\n          if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }\n          iVar6 = 0;\n        }" ({ "{") (if_statement "if (iVar18 != 0) {\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);\n            if (iVar6 == 0) goto LAB_0004f6e8;\n            iVar6 = iVar18 + 1;\n            uVar25 = CONCAT44(iVar6,iVar18 * 4);\n            piVar14 = param_2 + iVar18;\n            if (iVar22 == iVar18) goto LAB_0004fc80;\n            iVar20 = *piVar14;\n            *piVar14 = iVar20 + 1;\n            if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }\n          }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);" (assignment_expression "iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_0009d334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_0009d334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_0009d334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_0009d334"))) () ")")) (argument_list "(param_2,param_2,piVar23,iVar18)" (( "(") (identifier "param_2") (, ",") (identifier "param_2") (, ",") (identifier "piVar23") (, ",") (identifier "iVar18") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) goto LAB_0004f6e8;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004f6e8;" (goto "goto") (statement_identifier "LAB_0004f6e8") (; ";"))) (expression_statement "iVar6 = iVar18 + 1;" (assignment_expression "iVar6 = iVar18 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar25 = CONCAT44(iVar6,iVar18 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar6,iVar18 * 4)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar6,iVar18 * 4)" (identifier "CONCAT44") (argument_list "(iVar6,iVar18 * 4)" (( "(") (identifier "iVar6") (, ",") (binary_expression "iVar18 * 4" (identifier "iVar18") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar14 = param_2 + iVar18;" (assignment_expression "piVar14 = param_2 + iVar18" (identifier "piVar14") (= "=") (binary_expression "param_2 + iVar18" (identifier "param_2") (+ "+") (identifier "iVar18"))) (; ";")) (if_statement "if (iVar22 == iVar18) goto LAB_0004fc80;" (if "if") (parenthesized_expression "(iVar22 == iVar18)" (( "(") (binary_expression "iVar22 == iVar18" (identifier "iVar22") (== "==") (identifier "iVar18")) () ")")) (goto_statement "goto LAB_0004fc80;" (goto "goto") (statement_identifier "LAB_0004fc80") (; ";"))) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" (identifier "iVar20") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "*piVar14 = iVar20 + 1;" (assignment_expression "*piVar14 = iVar20 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar20 + 1 == 0) {\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" (if "if") (parenthesized_expression "(iVar20 + 1 == 0)" (( "(") (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }\n              iVar18 = iVar18 + 2;\n              iVar20 = param_2[iVar6] + 1;\n              param_2[iVar6] = iVar20;\n              if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }\n            }" ({ "{") (if_statement "if (iVar22 <= iVar6) {\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" (if "if") (parenthesized_expression "(iVar22 <= iVar6)" (( "(") (binary_expression "iVar22 <= iVar6" (identifier "iVar22") (<= "<=") (identifier "iVar6")) () ")")) (compound_statement "{\nLAB_0004f9ec:\n                iVar6 = 1;\n                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);\n                goto LAB_0004f6ec;\n              }" ({ "{") (labeled_statement "LAB_0004f9ec:\n                iVar6 = 1;" (statement_identifier "LAB_0004f9ec") (: ":") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";"))) (expression_statement "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);" (assignment_expression "uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar22 + 1,iVar22 * 4)" (identifier "CONCAT44") (argument_list "(iVar22 + 1,iVar22 * 4)" (( "(") (binary_expression "iVar22 + 1" (identifier "iVar22") (+ "+") (number_literal "1")) (, ",") (binary_expression "iVar22 * 4" (identifier "iVar22") (* "*") (number_literal "4")) () ")")))) (; ";")) (goto_statement "goto LAB_0004f6ec;" (goto "goto") (statement_identifier "LAB_0004f6ec") (; ";")) (} "}"))) (expression_statement "iVar18 = iVar18 + 2;" (assignment_expression "iVar18 = iVar18 + 2" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 2" (identifier "iVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar20 = param_2[iVar6] + 1;" (assignment_expression "iVar20 = param_2[iVar6] + 1" (identifier "iVar20") (= "=") (binary_expression "param_2[iVar6] + 1" (subscript_expression "param_2[iVar6]" (identifier "param_2") ([ "[") (identifier "iVar6") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2[iVar6] = iVar20;" (assignment_expression "param_2[iVar6] = iVar20" (subscript_expression "param_2[iVar6]" (identifier "param_2") ([ "[") (identifier "iVar6") (] "]")) (= "=") (identifier "iVar20")) (; ";")) (if_statement "if (iVar20 == 0) {\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);\n                goto LAB_0004f6e8;\n              }" ({ "{") (do_statement "do {\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                } while (iVar20 + 1 == 0);" (do "do") (compound_statement "{\n                  if (iVar22 == iVar18) goto LAB_0004f9ec;\n                  iVar20 = piVar14[2];\n                  iVar18 = iVar18 + 1;\n                  piVar14[2] = iVar20 + 1;\n                  iVar6 = 0;\n                  piVar14 = piVar14 + 1;\n                }" ({ "{") (if_statement "if (iVar22 == iVar18) goto LAB_0004f9ec;" (if "if") (parenthesized_expression "(iVar22 == iVar18)" (( "(") (binary_expression "iVar22 == iVar18" (identifier "iVar22") (== "==") (identifier "iVar18")) () ")")) (goto_statement "goto LAB_0004f9ec;" (goto "goto") (statement_identifier "LAB_0004f9ec") (; ";"))) (expression_statement "iVar20 = piVar14[2];" (assignment_expression "iVar20 = piVar14[2]" (identifier "iVar20") (= "=") (subscript_expression "piVar14[2]" (identifier "piVar14") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14[2] = iVar20 + 1;" (assignment_expression "piVar14[2] = iVar20 + 1" (subscript_expression "piVar14[2]" (identifier "piVar14") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 + 1 == 0)" (( "(") (binary_expression "iVar20 + 1 == 0" (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_0004f6e8;" (goto "goto") (statement_identifier "LAB_0004f6e8") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_0004f6e8:\n        uVar25 = CONCAT44(iVar22,iVar22 << 2);" (statement_identifier "LAB_0004f6e8") (: ":") (expression_statement "uVar25 = CONCAT44(iVar22,iVar22 << 2);" (assignment_expression "uVar25 = CONCAT44(iVar22,iVar22 << 2)" (identifier "uVar25") (= "=") (call_expression "CONCAT44(iVar22,iVar22 << 2)" (identifier "CONCAT44") (argument_list "(iVar22,iVar22 << 2)" (( "(") (identifier "iVar22") (, ",") (binary_expression "iVar22 << 2" (identifier "iVar22") (<< "<<") (number_literal "2")) () ")")))) (; ";"))) (goto_statement "goto LAB_0004f6ec;" (goto "goto") (statement_identifier "LAB_0004f6ec") (; ";")) (} "}"))) (labeled_statement "LAB_0004f480:\n      iVar22 = iVar6 + -1;" (statement_identifier "LAB_0004f480") (: ":") (expression_statement "iVar22 = iVar6 + -1;" (assignment_expression "iVar22 = iVar6 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" (identifier "iVar20") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar22 != 0) {\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" (if "if") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);\n        local_8c = param_2 + iVar6 + -1;\n      }" ({ "{") (do_statement "do {\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        } while (iVar22 != 0);" (do "do") (compound_statement "{\n          piVar14 = piVar14 + 1;\n          *piVar9 = iVar20;\n          iVar22 = iVar22 + -1;\n          iVar20 = *piVar14;\n          piVar9 = piVar9 + 1;\n        }" ({ "{") (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar9 = iVar20;" (assignment_expression "*piVar9 = iVar20" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar20 = *piVar14;" (assignment_expression "iVar20 = *piVar14" (identifier "iVar20") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_8c = param_2 + iVar6 + -1;" (assignment_expression "local_8c = param_2 + iVar6 + -1" (identifier "local_8c") (= "=") (binary_expression "param_2 + iVar6 + -1" (binary_expression "param_2 + iVar6" (identifier "param_2") (+ "+") (identifier "iVar6")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar18 = -iVar6;" (assignment_expression "iVar18 = -iVar6" (identifier "iVar18") (= "=") (unary_expression "-iVar6" (- "-") (identifier "iVar6"))) (; ";")) (expression_statement "*local_8c = iVar20;" (assignment_expression "*local_8c = iVar20" (pointer_expression "*local_8c" (* "*") (identifier "local_8c")) (= "=") (identifier "iVar20")) (; ";")) (} "}")))) (labeled_statement "LAB_0004f338:\n    *param_3 = iVar18;" (statement_identifier "LAB_0004f338") (: ":") (expression_statement "*param_3 = iVar18;" (assignment_expression "*param_3 = iVar18" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar18")) (; ";"))) (goto_statement "goto joined_r0x0004f3e8;" (goto "goto") (statement_identifier "joined_r0x0004f3e8") (; ";")) (} "}")))) (expression_statement "*(int **)(puVar24 + 0x18) = piVar9;" (assignment_expression "*(int **)(puVar24 + 0x18) = piVar9" (pointer_expression "*(int **)(puVar24 + 0x18)" (* "*") (cast_expression "(int **)(puVar24 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x18)" (( "(") (binary_expression "puVar24 + 0x18" (identifier "puVar24") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(uint *)(puVar24 + 0x14) = uVar16;" (assignment_expression "*(uint *)(puVar24 + 0x14) = uVar16" (pointer_expression "*(uint *)(puVar24 + 0x14)" (* "*") (cast_expression "(uint *)(puVar24 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x14)" (( "(") (binary_expression "puVar24 + 0x14" (identifier "puVar24") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (goto_statement "goto LAB_0004f4dc;" (goto "goto") (statement_identifier "LAB_0004f4dc") (; ";")) (} "}")))

type_1 function_1(type_2 var_18,type_2 var_28,type_1 *usizep,type_2 var_13,type_1 var_2,type_2 var_16,
                       type_1 var_1)

{
  bool bVar1;
  type_3 *puVar2;
  type_1 hgcd_scratch;
  type_4 var_10;
  int var_5;
  type_5 *var_22;
  type_5 *var_24;
  type_2 var_15;
  type_5 *var_23;
  type_1 var_14;
  type_5 *var_32;
  type_5 *var_30;
  type_5 *var_27;
  type_5 *var_17;
  type_5 *var_20;
  int var_29;
  type_5 *var_31;
  type_4 var_3;
  int var_6;
  int var_4;
  type_5 var_26;
  type_5 var_25;
  type_1 gn;
  int var_9;
  type_5 *var_19;
  type_1 p1;
  int var_8;
  int var_7;
  type_6 *var_12;
  type_7 uVar26;
  type_6 var_11 [32];
  type_2 local_90;
  type_5 *local_8c;
  type_8 *var_21;
  type_1 var_33;
  type_9 ctx;
  type_10 M;
  
  puVar2 = PTR___stack_chk_guard_0009d540;
  var_12 = var_11;
  var_3 = var_1 * 4 + 3;
  var_10 = (var_2 - var_1) + 1;
  if ((int)var_3 <= (int)var_10) {
    var_3 = var_10;
  }
  var_9 = var_1 + 1;
  var_21 = (type_8 *)0x0;
  var_29 = *(int *)PTR___stack_chk_guard_0009d540;
  var_10 = var_3 << 2;
  var_4 = var_1 >> 1;
  if (599 < var_1) {
    var_5 = var_1 / 3;
    var_7 = var_5;
    if (var_4 <= var_5) {
      var_7 = var_4;
    }
    var_6 = var_4;
    if (var_4 < var_5) {
      var_6 = var_5;
    }
    var_5 = (*(type_11 *)PTR___gmpn_hgcd_itch_0009d464)();
    var_6 = var_1 + var_6 + -1;
    if (var_5 <= var_6) {
      var_5 = var_6;
    }
    var_10 = 0x106b;
    if (0x106a < (int)var_3) {
      var_10 = var_3;
    }
    var_8 = (((var_1 - var_7) + 1) / 2 + 1) * 4;
    var_3 = var_5 + var_8;
    if (var_5 + var_8 < (int)var_10) {
      var_3 = var_10;
    }
    var_3 = var_9 * 2 + var_3;
    var_10 = var_3 * 4;
  }
  if (var_10 < 0x7f01) {
    var_5 = -(var_10 + 7 & 0xfffffff8);
    var_12 = var_11 + var_5;
    var_17 = (type_5 *)(&stack0xffffff58 + var_5);
  }
  else {
    var_17 = (type_5 *)(*(type_11 *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&var_21);
  }
  local_90 = var_18;
  local_8c = var_28;
  if (var_1 < var_2) {
    *(type_1 *)(var_12 + 0x18) = var_1;
    *(type_2 *)(var_12 + 0x14) = var_16;
    *(type_1 *)(var_12 + 0x10) = var_2;
    (*(type_11 *)PTR___gmpn_tdiv_qr_0009d614)(var_17,var_13,0,var_13);
    var_15 = var_13 + var_1;
    var_14 = var_1;
    do {
      var_14 = var_14 + -1;
      if (var_15[-1] != 0) goto LAB_0004eb40;
      var_15 = var_15 + -1;
    } while (var_14 != 0);
    if (var_1 != 0) {
      var_9 = var_1 + -1;
      var_25 = *var_16;
      var_17 = var_18;
      if (var_9 != 0) {
        do {
          var_16 = var_16 + 1;
          *var_17 = var_25;
          var_9 = var_9 + -1;
          var_25 = *var_16;
          var_17 = var_17 + 1;
        } while (var_9 != 0);
        local_90 = var_18 + var_1 + -1;
      }
      *local_90 = var_25;
    }
    *usizep = 0;
    goto joined_r0x0004f3e8;
  }
LAB_0004eb40:
  if (599 < var_1) {
    if (var_9 != 0) {
      (*(type_11 *)PTR_memset_0009d2e8)(var_17,0,var_9 * 8);
    }
    var_19 = var_17 + var_9;
    var_20 = var_19 + var_9;
    ctx.var_18 = var_18;
    ctx.var_28 = var_28;
    ctx.usize = usizep;
    (*(type_11 *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,var_1 - var_4,var_20);
    var_27 = var_20 + var_8;
    *(type_5 **)(var_12 + 0x10) = var_27;
    var_9 = (*(type_11 *)PTR___gmpn_hgcd_0009d264)(var_13 + var_4,var_16 + var_4,var_1 - var_4,&M);
    if (var_9 < 1) {
      *var_19 = 1;
      *(type_5 **)(var_12 + 0x18) = var_20;
      ctx.tp = var_20 + var_1;
      *(type_9 **)(var_12 + 0x14) = &ctx;
      ctx.un = 1;
      ctx.u0 = var_17;
      ctx.u1 = var_19;
      *(type_3 **)(var_12 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
      var_3 = (*(type_11 *)PTR___gmpn_gcd_subdiv_step_0009d118)(var_13,var_16,var_1,0);
      var_9 = ctx.un;
      if (var_3 == 0) {
LAB_0004f0cc:
        var_1 = ctx.gn;
        if (var_21 == (type_8 *)0x0) goto LAB_0004f0dc;
        (*(type_11 *)PTR___gmp_tmp_reentrant_free_0009d618)();
        var_1 = ctx.gn;
        goto LAB_0004f0dc;
      }
    }
    else {
      *(int *)(var_12 + 0x10) = var_4;
      *(type_5 **)(var_12 + 0x14) = var_27;
      var_3 = (*(type_11 *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,var_4 + var_9,var_13,var_16);
      var_24 = M.p[1][1];
      var_9 = M.var_1;
      if (M.var_1 != 0) {
        var_5 = M.var_1 + -1;
        var_25 = *M.p[1][0];
        var_4 = var_5;
        var_22 = var_17;
        var_23 = M.p[1][0];
        if (var_5 == 0) {
          *var_17 = var_25;
          *var_19 = *var_24;
        }
        else {
          do {
            *var_22 = var_25;
            var_4 = var_4 + -1;
            var_25 = var_23[1];
            var_22 = var_22 + 1;
            var_23 = var_23 + 1;
          } while (var_4 != 0);
          var_17[var_9 + -1] = var_25;
          var_25 = *var_24;
          var_22 = var_19;
          do {
            var_24 = var_24 + 1;
            *var_22 = var_25;
            var_5 = var_5 + -1;
            var_25 = *var_24;
            var_22 = var_22 + 1;
          } while (var_5 != 0);
          var_19[var_9 + -1] = var_25;
        }
      }
      if (var_17[var_9 + -1] == 0 && var_19[var_9 + -1] == 0) {
        var_22 = var_17 + var_9 + -2;
        var_24 = var_19 + var_9 + -2;
        do {
          var_25 = *var_22;
          var_9 = var_9 + -1;
          var_26 = *var_24;
          var_22 = var_22 + -1;
          var_24 = var_24 + -1;
        } while (var_25 == 0 && var_26 == 0);
      }
    }
    if (599 < (int)var_3) {
      do {
        while( true ) {
          var_10 = var_3 / 3;
          (*(type_11 *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,var_3 - var_10,var_20);
          *(type_5 **)(var_12 + 0x10) = var_27;
          var_4 = (*(type_11 *)PTR___gmpn_hgcd_0009d264)(var_13 + var_10,var_16 + var_10,var_3 - var_10,&M);
          if (var_4 < 1) break;
          *(type_5 **)(var_12 + 0x14) = var_27;
          *(type_4 *)(var_12 + 0x10) = var_10;
          var_3 = (*(type_11 *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,var_10 + var_4,var_13,var_16);
          var_15 = M.p[0][0];
          var_14 = M.var_1;
          if (var_9 != 0) {
            var_4 = var_9 + -1;
            var_25 = *var_17;
            var_22 = var_27;
            var_24 = var_17;
            if (var_4 != 0) {
              do {
                *var_22 = var_25;
                var_4 = var_4 + -1;
                var_25 = var_24[1];
                var_22 = var_22 + 1;
                var_24 = var_24 + 1;
              } while (var_4 != 0);
              var_22 = var_27 + var_9 + 0x3fffffff;
            }
            *var_22 = var_25;
          }
          var_24 = var_27 + var_9;
          if (M.var_1 < var_9) {
            *(type_1 *)(var_12 + 0x10) = M.var_1;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_24,var_27,var_9,var_15);
            var_15 = M.p[1][0];
            *(type_1 *)(var_12 + 0x10) = M.var_1;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_17,var_19,var_9,var_15);
          }
          else {
            *(int *)(var_12 + 0x10) = var_9;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_24,var_15,var_14,var_27);
            var_15 = M.p[1][0];
            var_14 = M.var_1;
            *(int *)(var_12 + 0x10) = var_9;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_17,var_15,var_14,var_19);
          }
          var_25 = (*(type_11 *)PTR___gmpn_add_n_0009d334)(var_17,var_17,var_24,var_9 + M.var_1);
          var_15 = M.p[1][1];
          var_14 = M.var_1;
          if (M.var_1 < var_9) {
            *(type_1 *)(var_12 + 0x10) = M.var_1;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_24,var_19,var_9,var_15);
            var_15 = M.p[0][1];
            *(type_1 *)(var_12 + 0x10) = M.var_1;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_19,var_27,var_9,var_15);
          }
          else {
            *(int *)(var_12 + 0x10) = var_9;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_24,var_15,var_14,var_19);
            var_15 = M.p[0][1];
            var_14 = M.var_1;
            *(int *)(var_12 + 0x10) = var_9;
            (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_19,var_15,var_14,var_27);
          }
          var_26 = (*(type_11 *)PTR___gmpn_add_n_0009d334)(var_19,var_19,var_24,var_9 + M.var_1);
          var_9 = var_9 + M.var_1;
          if (var_25 == 0 && var_26 == 0) {
            if (var_17[var_9 + 0x3fffffff] == 0 && var_19[var_9 + 0x3fffffff] == 0) {
              var_22 = var_17 + var_9 + 0x3ffffffe;
              var_24 = var_19 + var_9 + 0x3ffffffe;
              do {
                var_25 = *var_22;
                var_9 = var_9 + -1;
                var_26 = *var_24;
                var_22 = var_22 + -1;
                var_24 = var_24 + -1;
              } while (var_25 == 0 && var_26 == 0);
            }
          }
          else {
            var_17[var_9] = var_25;
            var_19[var_9] = var_26;
            var_9 = var_9 + 1;
          }
          if ((int)var_3 < 600) goto LAB_0004ef08;
        }
        *(type_5 **)(var_12 + 0x18) = var_20;
        *(type_3 **)(var_12 + 0x10) = PTR___gmpn_gcdext_hook_0009d2c0;
        ctx.un = var_9;
        ctx.u0 = var_17;
        ctx.u1 = var_19;
        ctx.tp = var_20 + var_3;
        *(type_9 **)(var_12 + 0x14) = &ctx;
        var_3 = (*(type_11 *)PTR___gmpn_gcd_subdiv_step_0009d118)(var_13,var_16,var_3,0);
        if (var_3 == 0) goto LAB_0004f0cc;
        var_9 = ctx.un;
      } while (599 < (int)var_3);
    }
LAB_0004ef08:
    var_27 = var_13 + var_3;
    var_24 = var_16 + var_3;
    var_10 = var_3;
    var_22 = var_27;
    var_23 = var_24;
    while( true ) {
      var_10 = var_10 - 1;
      var_23 = var_23 + -1;
      if ((int)var_10 < 0) break;
      var_30 = var_22 + -1;
      var_22 = var_22 + -1;
      if (*var_30 != *var_23) goto LAB_0004f274;
    }
    if (var_3 != 0) {
      var_25 = *var_13;
      if (var_3 != 1) {
        var_15 = var_18;
        var_20 = var_13 + 1;
        do {
          *var_15 = var_25;
          var_24 = var_20 + 1;
          var_25 = *var_20;
          var_15 = var_15 + 1;
          var_20 = var_24;
        } while (var_24 != var_27);
        local_90 = var_18 + (var_3 - 1);
      }
      *local_90 = var_25;
    }
    var_22 = var_17 + var_9;
    var_20 = var_19 + var_9;
    var_4 = var_9;
    var_27 = var_22;
    var_24 = var_20;
    do {
      var_4 = var_4 + -1;
      var_24 = var_24 + -1;
      if (var_4 < 0) goto LAB_0004efd4;
      var_23 = var_27 + -1;
      var_27 = var_27 + -1;
    } while (*var_23 == *var_24);
    if (*var_24 < *var_23) goto LAB_0004efd4;
    if (var_9 < 1) {
      var_4 = var_9 + -1;
      if (var_9 != 0) goto LAB_0004fb70;
    }
    else {
      var_4 = var_9 + -1;
      if (var_22[-1] == 0) {
        do {
          var_4 = var_9;
          var_9 = var_4 + -1;
          if (var_9 == 0) goto LAB_0004f044;
          var_20 = var_22 + -2;
          var_22 = var_22 + -1;
        } while (*var_20 == 0);
        var_4 = var_4 + -2;
      }
LAB_0004fb70:
      var_25 = *var_17;
      var_20 = var_28;
      if (var_4 != 0) {
        do {
          var_17 = var_17 + 1;
          *var_20 = var_25;
          var_4 = var_4 + -1;
          var_25 = *var_17;
          var_20 = var_20 + 1;
        } while (var_4 != 0);
        local_8c = var_28 + var_9 + -1;
      }
      var_9 = -var_9;
      *local_8c = var_25;
    }
    goto LAB_0004f044;
  }
  *(type_5 **)(var_12 + 0x18) = var_17;
  *(type_1 *)(var_12 + 0x14) = var_1;
LAB_0004f4dc:
  *(type_2 *)(var_12 + 0x10) = var_16;
  var_1 = (*(type_11 *)PTR___gmpn_gcdext_lehmer_n_0009d160)(var_18,var_28,usizep,var_13);
joined_r0x0004f3e8:
  while( true ) {
    if (var_21 != (type_8 *)0x0) {
      (*(type_11 *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
LAB_0004f0dc:
    if (var_29 == *(int *)puVar2) break;
    uVar26 = (*(type_11 *)PTR___stack_chk_fail_0009d4d0)();
LAB_0004fc80:
    var_5 = 1;
LAB_0004f6ec:
    var_9 = (int)((type_12)uVar26 >> 0x20);
    *(int *)((int)local_8c + (int)uVar26) = var_5;
LAB_0004f6f8:
    if (var_3 != 0) {
      var_9 = -var_9;
    }
    *usizep = var_9;
  }
  return var_1;
LAB_0004efd4:
  var_25 = var_20[-1];
  while (var_25 == 0) {
    var_9 = var_9 + -1;
    var_25 = var_20[-2];
    var_20 = var_20 + -1;
  }
  if (var_9 != 0) {
    var_4 = var_9 + -1;
    var_25 = *var_19;
    var_17 = var_28;
    if (var_4 != 0) {
      do {
        var_19 = var_19 + 1;
        *var_17 = var_25;
        var_4 = var_4 + -1;
        var_25 = *var_19;
        var_17 = var_17 + 1;
      } while (var_4 != 0);
      local_8c = var_28 + var_9 + -1;
    }
    *local_8c = var_25;
  }
LAB_0004f044:
  *usizep = var_9;
  var_1 = var_3;
  goto joined_r0x0004f3e8;
LAB_0004f274:
  if ((*var_17 != 0) || (var_9 != 1)) {
    var_22 = var_20 + var_3;
    var_23 = var_22 + var_3;
    if (var_3 != 0) {
      var_25 = *var_13;
      var_26 = *var_16;
      if (var_3 == 1) {
        *var_22 = var_25;
        *var_23 = var_26;
      }
      else {
        var_30 = var_13 + 1;
        var_31 = var_22;
        do {
          *var_31 = var_25;
          var_32 = var_30 + 1;
          var_25 = *var_30;
          var_30 = var_32;
          var_31 = var_31 + 1;
        } while (var_32 != var_27);
        var_23[-1] = var_25;
        var_30 = var_16 + 1;
        var_31 = var_23;
        do {
          *var_31 = var_26;
          var_32 = var_30 + 1;
          var_26 = *var_30;
          var_30 = var_32;
          var_31 = var_31 + 1;
        } while (var_32 != var_24);
        var_23[var_3 - 1] = var_26;
      }
    }
    *(type_4 *)(var_12 + 0x14) = var_3;
    *(type_5 **)(var_12 + 0x18) = var_23 + var_3;
    *(type_5 **)(var_12 + 0x10) = var_23;
    var_1 = (*(type_11 *)PTR___gmpn_gcdext_lehmer_n_0009d160)(var_18,var_20,&var_33,var_22);
    var_14 = var_33;
    var_4 = var_33;
    var_5 = var_9;
    if (var_9 < 1) {
      if (var_33 != 0) goto LAB_0004f508;
      if (var_9 != 0) goto LAB_0004f480;
    }
    else {
      if (var_17[var_9 + -1] == 0) {
        var_23 = var_17 + var_9;
        do {
          var_5 = var_5 + -1;
          if (var_5 == 0) {
            if (var_33 == 0) goto LAB_0004f338;
            goto LAB_0004f508;
          }
          var_30 = var_23 + -2;
          var_23 = var_23 + -1;
        } while (*var_30 == 0);
      }
      if (var_33 != 0) {
LAB_0004f508:
        var_23 = var_22 + var_3 + 1;
        if (var_33 < 0) {
          var_4 = -var_33;
        }
        var_10 = var_3;
        if ((int)var_3 < 1) {
LAB_0004f550:
          *(type_4 *)(var_12 + 0x10) = var_10;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_23,var_20,var_4,var_13);
        }
        else {
          var_25 = var_27[-1];
          while (var_25 == 0) {
            var_10 = var_10 - 1;
            if (var_10 == 0) goto LAB_0004f550;
            var_25 = var_27[-2];
            var_27 = var_27 + -1;
          }
          if ((int)var_10 < var_4) goto LAB_0004f550;
          *(int *)(var_12 + 0x10) = var_4;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_23,var_13,var_10,var_20);
        }
        var_4 = var_4 + var_10;
        if (var_14 < 1) {
          if (((var_1 != 0) &&
              (var_7 = (*(type_11 *)PTR___gmpn_add_n_0009d334)(var_23,var_23,var_18,var_1), var_7 != 0)) &&
             (var_1 < var_4)) {
            var_27 = var_23 + var_1;
            var_25 = *var_27;
            *var_27 = var_25 + 1;
            if ((var_25 + 1 == 0) && ((int)(var_1 + 1U) < var_4)) {
              var_25 = var_23[var_1 + 1] + 1;
              var_23[var_1 + 1] = var_25;
              for (var_7 = var_1 + 2; (var_25 == 0 && (var_4 != var_7)); var_7 = var_7 + 1) {
                var_25 = var_27[2] + 1;
                var_27[2] = var_25;
                var_27 = var_27 + 1;
              }
            }
          }
          var_4 = var_4 - (type_4)(var_23[var_4 + -1] == 0);
          var_7 = var_4 + 1;
LAB_0004f728:
          if (0 < (int)var_3) {
            var_25 = var_24[-1];
            while (var_25 == 0) {
              var_3 = var_3 - 1;
              if (var_3 == 0) break;
              var_25 = var_24[-2];
              var_24 = var_24 + -1;
            }
          }
          *(type_4 *)(var_12 + 0x10) = var_3;
          (*(type_11 *)PTR___gmpn_divexact_0009d4b4)(var_22,var_23,var_4,var_16);
          var_7 = (var_7 - var_3) - (type_4)(var_22[(var_7 - var_3) + -1] == 0);
        }
        else {
          if (((var_1 != 0) &&
              (var_7 = (*(type_11 *)PTR___gmpn_sub_n_0009d514)(var_23,var_23,var_18,var_1), var_7 != 0)) &&
             (var_1 < var_4)) {
            var_27 = var_23 + var_1;
            var_25 = *var_27;
            *var_27 = var_25 - 1;
            if ((var_25 == 0) && ((int)(var_1 + 1U) < var_4)) {
              var_25 = var_23[var_1 + 1];
              var_23[var_1 + 1] = var_25 - 1;
              for (var_7 = var_1 + 2; (var_25 == 0 && (var_4 != var_7)); var_7 = var_7 + 1) {
                var_25 = var_27[2];
                var_27[2] = var_25 - 1;
                var_27 = var_27 + 1;
              }
            }
          }
          if (0 < var_4) {
            if (var_23[var_4 + -1] != 0) goto LAB_0004f720;
            var_27 = var_23 + var_4;
            do {
              var_7 = var_4;
              var_4 = var_7 + -1;
              if (var_4 == 0) {
                var_7 = 0;
                goto LAB_0004f5f0;
              }
              var_30 = var_27 + -2;
              var_27 = var_27 + -1;
            } while (*var_30 == 0);
            goto LAB_0004f728;
          }
          var_7 = 0;
          if (var_4 != 0) {
LAB_0004f720:
            var_7 = var_4 + 1;
            goto LAB_0004f728;
          }
        }
LAB_0004f5f0:
        bVar1 = var_33 < 1;
        if (bVar1) {
          var_33 = -var_33;
        }
        var_14 = var_33;
        var_3 = (type_4)bVar1;
        if ((0 < var_9) && (var_19[var_9 + -1] == 0)) {
          var_27 = var_19 + var_9;
          do {
            var_9 = var_9 + -1;
            if (var_9 == 0) break;
            var_24 = var_27 + -2;
            var_27 = var_27 + -1;
          } while (*var_24 == 0);
        }
        if (var_9 < var_33) {
          *(int *)(var_12 + 0x10) = var_9;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_28,var_20,var_14,var_19);
        }
        else {
          *(type_1 *)(var_12 + 0x10) = var_33;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_28,var_19,var_9,var_20);
        }
        var_9 = (var_9 + var_33) - (type_4)(var_28[var_9 + var_33 + -1] == 0);
        if (var_7 < 1) goto LAB_0004f6f8;
        if (var_5 < var_7) {
          *(int *)(var_12 + 0x10) = var_5;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_19,var_22,var_7,var_17);
        }
        else {
          *(int *)(var_12 + 0x10) = var_7;
          (*(type_11 *)PTR___gmpn_mul_0009d2b4)(var_19,var_17,var_5,var_22);
        }
        var_4 = (var_7 + var_5) - (type_4)(var_19[var_7 + var_5 + -1] == 0);
        if (var_9 < var_4) {
          if (var_9 != 0) {
            var_5 = (*(type_11 *)PTR___gmpn_add_n_0009d334)(var_28,var_19,var_28,var_9);
            if (var_5 == 0) {
              if (var_28 == var_19) {
                uVar26 = var_34(var_4,var_4 * 4);
                var_5 = 0;
                goto LAB_0004f6ec;
              }
              bVar1 = var_9 < var_4;
              goto LAB_0004fa3c;
            }
            var_17 = var_19 + var_9;
            var_15 = var_28 + var_9;
            while( true ) {
              var_7 = var_9;
              var_25 = *var_17;
              var_9 = var_7 + 1;
              *var_15 = var_25 + 1;
              if (var_25 + 1 != 0) break;
              var_17 = var_17 + 1;
              var_15 = var_15 + 1;
              if (var_4 == var_9) {
                var_5 = 1;
                uVar26 = var_34(var_7 + 2,var_4 * 4);
                goto LAB_0004f6ec;
              }
            }
          }
          bVar1 = var_9 < var_4;
          if ((var_28 != var_19) && (bVar1)) {
LAB_0004fa3c:
            var_5 = 4;
            if (bVar1) {
              var_5 = (var_4 - var_9) * 4;
            }
            (*(type_11 *)PTR_memcpy_0009d544)(var_28 + var_9,var_19 + var_9,var_5);
            var_5 = 0;
            uVar26 = var_34(var_4,var_4 * 4);
            goto LAB_0004f6ec;
          }
          var_5 = 0;
          var_9 = var_4;
        }
        else {
          if (var_4 != 0) {
            var_5 = (*(type_11 *)PTR___gmpn_add_n_0009d334)(var_28,var_28,var_19,var_4);
            if (var_5 == 0) goto LAB_0004f6e8;
            var_5 = var_4 + 1;
            uVar26 = var_34(var_5,var_4 * 4);
            var_15 = var_28 + var_4;
            if (var_9 == var_4) goto LAB_0004fc80;
            var_25 = *var_15;
            *var_15 = var_25 + 1;
            if (var_25 + 1 == 0) {
              if (var_9 <= var_5) {
LAB_0004f9ec:
                var_5 = 1;
                uVar26 = var_34(var_9 + 1,var_9 * 4);
                goto LAB_0004f6ec;
              }
              var_4 = var_4 + 2;
              var_25 = var_28[var_5] + 1;
              var_28[var_5] = var_25;
              if (var_25 == 0) {
                do {
                  if (var_9 == var_4) goto LAB_0004f9ec;
                  var_25 = var_15[2];
                  var_4 = var_4 + 1;
                  var_15[2] = var_25 + 1;
                  var_5 = 0;
                  var_15 = var_15 + 1;
                } while (var_25 + 1 == 0);
                goto LAB_0004f6e8;
              }
            }
          }
          var_5 = 0;
        }
LAB_0004f6e8:
        uVar26 = var_34(var_9,var_9 << 2);
        goto LAB_0004f6ec;
      }
LAB_0004f480:
      var_9 = var_5 + -1;
      var_25 = *var_17;
      var_20 = var_28;
      if (var_9 != 0) {
        do {
          var_17 = var_17 + 1;
          *var_20 = var_25;
          var_9 = var_9 + -1;
          var_25 = *var_17;
          var_20 = var_20 + 1;
        } while (var_9 != 0);
        local_8c = var_28 + var_5 + -1;
      }
      var_4 = -var_5;
      *local_8c = var_25;
    }
LAB_0004f338:
    *usizep = var_4;
    goto joined_r0x0004f3e8;
  }
  *(type_5 **)(var_12 + 0x18) = var_20;
  *(type_4 *)(var_12 + 0x14) = var_3;
  goto LAB_0004f4dc;
}


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

uint MASKED(int *param_1,int *param_2,int *param_3,int *param_4,int param_5,int *param_6,
                  uint param_7)

{
  uint *puVar1;
  bool bVar2;
  undefined *puVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int *piVar10;
  int *piVar11;
  int *piVar12;
  int *piVar13;
  int *piVar14;
  int *piVar15;
  uint uVar16;
  int iVar17;
  int iVar18;
  uint *puVar19;
  int iVar20;
  uint *puVar21;
  int iVar22;
  int *piVar23;
  int unaff_s4;
  undefined1 *puVar24;
  undefined8 uVar25;
  undefined1 auStack_c8 [32];
  int *local_90;
  int *local_8c;
  int local_6c;
  int local_68;
  int *local_64;
  uint local_60;
  int *local_5c;
  int *local_58;
  int local_54;
  int *local_50;
  int *local_4c;
  int *local_48;
  undefined1 auStack_44 [4];
  int local_40;
  undefined4 local_3c;
  undefined4 local_38;
  int *local_34;
  int *local_30;
  int local_2c;
  
  puVar3 = PTR___stack_chk_guard_0009d540;
  puVar24 = auStack_c8;
  uVar16 = param_7 * 4 + 3;
  uVar5 = (param_5 - param_7) + 1;
  if ((int)uVar16 <= (int)uVar5) {
    uVar16 = uVar5;
  }
  iVar22 = param_7 + 1;
  local_6c = 0;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  uVar5 = uVar16 << 2;
  iVar18 = (int)param_7 >> 1;
  if (599 < (int)param_7) {
    iVar6 = (int)param_7 / 3;
    iVar20 = iVar6;
    if (iVar18 <= iVar6) {
      iVar20 = iVar18;
    }
    iVar17 = iVar18;
    if (iVar18 < iVar6) {
      iVar17 = iVar6;
    }
    iVar6 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)();
    iVar17 = param_7 + iVar17 + -1;
    if (iVar6 <= iVar17) {
      iVar6 = iVar17;
    }
    uVar5 = 0x106b;
    if (0x106a < (int)uVar16) {
      uVar5 = uVar16;
    }
    unaff_s4 = ((int)((param_7 - iVar20) + 1) / 2 + 1) * 4;
    uVar16 = iVar6 + unaff_s4;
    if (iVar6 + unaff_s4 < (int)uVar5) {
      uVar16 = uVar5;
    }
    uVar16 = iVar22 * 2 + uVar16;
    uVar5 = uVar16 * 4;
  }
  if (uVar5 < 0x7f01) {
    iVar6 = -(uVar5 + 7 & 0xfffffff8);
    puVar24 = auStack_c8 + iVar6;
    piVar14 = (int *)(&stack0xffffff58 + iVar6);
  }
  else {
    piVar14 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_6c);
  }
  local_90 = param_1;
  local_8c = param_2;
  if ((int)param_7 < param_5) {
    *(uint *)(puVar24 + 0x18) = param_7;
    *(int **)(puVar24 + 0x14) = param_6;
    *(int *)(puVar24 + 0x10) = param_5;
    (*(code *)PTR___gmpn_tdiv_qr_0009d614)(piVar14,param_4,0,param_4);
    piVar9 = param_4 + param_7;
    uVar5 = param_7;
    do {
      uVar5 = uVar5 - 1;
      if (piVar9[-1] != 0) goto LAB_0004eb40;
      piVar9 = piVar9 + -1;
    } while (uVar5 != 0);
    if (param_7 != 0) {
      iVar22 = param_7 - 1;
      iVar18 = *param_6;
      piVar14 = param_1;
      if (iVar22 != 0) {
        do {
          param_6 = param_6 + 1;
          *piVar14 = iVar18;
          iVar22 = iVar22 + -1;
          iVar18 = *param_6;
          piVar14 = piVar14 + 1;
        } while (iVar22 != 0);
        local_90 = param_1 + (param_7 - 1);
      }
      *local_90 = iVar18;
    }
    *param_3 = 0;
    goto joined_r0x0004f3e8;
  }
LAB_0004eb40:
  if (599 < (int)param_7) {
    if (iVar22 != 0) {
      (*(code *)PTR_memset_0009d2e8)(piVar14,0,iVar22 * 8);
    }
    piVar23 = piVar14 + iVar22;
    piVar9 = piVar23 + iVar22;
    local_64 = param_1;
    local_5c = param_2;
    local_58 = param_3;
    (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,param_7 - iVar18,piVar9);
    piVar13 = piVar9 + unaff_s4;
    *(int **)(puVar24 + 0x10) = piVar13;
    iVar22 = (*(code *)PTR___gmpn_hgcd_0009d264)
                       (param_4 + iVar18,param_6 + iVar18,param_7 - iVar18,auStack_44);
    if (iVar22 < 1) {
      *piVar23 = 1;
      *(int **)(puVar24 + 0x18) = piVar9;
      local_48 = piVar9 + param_7;
      *(int ***)(puVar24 + 0x14) = &local_64;
      local_54 = 1;
      local_50 = piVar14;
      local_4c = piVar23;
      *(undefined **)(puVar24 + 0x10) = PTR_MASKED_hook_0009d2c0;
      uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,param_7,0);
      iVar22 = local_54;
      if (uVar16 == 0) {
LAB_0004f0cc:
        param_7 = local_60;
        if (local_6c == 0) goto LAB_0004f0dc;
        (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
        param_7 = local_60;
        goto LAB_0004f0dc;
      }
    }
    else {
      *(int *)(puVar24 + 0x10) = iVar18;
      *(int **)(puVar24 + 0x14) = piVar13;
      uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                         (auStack_44,iVar18 + iVar22,param_4,param_6);
      piVar8 = local_30;
      iVar22 = local_40;
      if (local_40 != 0) {
        iVar6 = local_40 + -1;
        iVar20 = *local_34;
        iVar18 = iVar6;
        piVar7 = piVar14;
        piVar10 = local_34;
        if (iVar6 == 0) {
          *piVar14 = iVar20;
          *piVar23 = *piVar8;
        }
        else {
          do {
            *piVar7 = iVar20;
            iVar18 = iVar18 + -1;
            iVar20 = piVar10[1];
            piVar7 = piVar7 + 1;
            piVar10 = piVar10 + 1;
          } while (iVar18 != 0);
          piVar14[iVar22 + -1] = iVar20;
          iVar18 = *piVar8;
          piVar7 = piVar23;
          do {
            piVar8 = piVar8 + 1;
            *piVar7 = iVar18;
            iVar6 = iVar6 + -1;
            iVar18 = *piVar8;
            piVar7 = piVar7 + 1;
          } while (iVar6 != 0);
          piVar23[iVar22 + -1] = iVar18;
        }
      }
      if (piVar14[iVar22 + -1] == 0 && piVar23[iVar22 + -1] == 0) {
        piVar7 = piVar14 + iVar22 + -2;
        piVar8 = piVar23 + iVar22 + -2;
        do {
          iVar18 = *piVar7;
          iVar22 = iVar22 + -1;
          iVar6 = *piVar8;
          piVar7 = piVar7 + -1;
          piVar8 = piVar8 + -1;
        } while (iVar18 == 0 && iVar6 == 0);
      }
    }
    if (599 < (int)uVar16) {
      do {
        while( true ) {
          uVar5 = uVar16 / 3;
          (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,uVar16 - uVar5,piVar9);
          *(int **)(puVar24 + 0x10) = piVar13;
          iVar18 = (*(code *)PTR___gmpn_hgcd_0009d264)
                             (param_4 + uVar5,param_6 + uVar5,uVar16 - uVar5,auStack_44);
          if (iVar18 < 1) break;
          *(int **)(puVar24 + 0x14) = piVar13;
          *(uint *)(puVar24 + 0x10) = uVar5;
          uVar16 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                             (auStack_44,uVar5 + iVar18,param_4,param_6);
          uVar4 = local_3c;
          iVar18 = local_40;
          if (iVar22 != 0) {
            iVar6 = iVar22 + -1;
            iVar20 = *piVar14;
            piVar7 = piVar13;
            piVar8 = piVar14;
            if (iVar6 != 0) {
              do {
                *piVar7 = iVar20;
                iVar6 = iVar6 + -1;
                iVar20 = piVar8[1];
                piVar7 = piVar7 + 1;
                piVar8 = piVar8 + 1;
              } while (iVar6 != 0);
              piVar7 = piVar13 + iVar22 + 0x3fffffff;
            }
            *piVar7 = iVar20;
          }
          piVar8 = piVar13 + iVar22;
          if (local_40 < iVar22) {
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar13,iVar22,uVar4);
            piVar7 = local_34;
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar23,iVar22,piVar7);
          }
          else {
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,uVar4,iVar18,piVar13);
            piVar7 = local_34;
            iVar18 = local_40;
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar14,piVar7,iVar18,piVar23);
          }
          iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar14,piVar14,piVar8,iVar22 + local_40);
          piVar7 = local_30;
          iVar18 = local_40;
          if (local_40 < iVar22) {
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar23,iVar22,piVar7);
            uVar4 = local_38;
            *(int *)(puVar24 + 0x10) = local_40;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar13,iVar22,uVar4);
          }
          else {
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar8,piVar7,iVar18,piVar23);
            uVar4 = local_38;
            iVar18 = local_40;
            *(int *)(puVar24 + 0x10) = iVar22;
            (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,uVar4,iVar18,piVar13);
          }
          iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar23,piVar23,piVar8,iVar22 + local_40);
          iVar22 = iVar22 + local_40;
          if (iVar6 == 0 && iVar18 == 0) {
            if (piVar14[iVar22 + 0x3fffffff] == 0 && piVar23[iVar22 + 0x3fffffff] == 0) {
              piVar7 = piVar14 + iVar22 + 0x3ffffffe;
              piVar8 = piVar23 + iVar22 + 0x3ffffffe;
              do {
                iVar18 = *piVar7;
                iVar22 = iVar22 + -1;
                iVar6 = *piVar8;
                piVar7 = piVar7 + -1;
                piVar8 = piVar8 + -1;
              } while (iVar18 == 0 && iVar6 == 0);
            }
          }
          else {
            piVar14[iVar22] = iVar6;
            piVar23[iVar22] = iVar18;
            iVar22 = iVar22 + 1;
          }
          if ((int)uVar16 < 600) goto LAB_0004ef08;
        }
        *(int **)(puVar24 + 0x18) = piVar9;
        *(undefined **)(puVar24 + 0x10) = PTR_MASKED_hook_0009d2c0;
        local_54 = iVar22;
        local_50 = piVar14;
        local_4c = piVar23;
        local_48 = piVar9 + uVar16;
        *(int ***)(puVar24 + 0x14) = &local_64;
        uVar16 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_4,param_6,uVar16,0);
        if (uVar16 == 0) goto LAB_0004f0cc;
        iVar22 = local_54;
      } while (599 < (int)uVar16);
    }
LAB_0004ef08:
    piVar13 = param_4 + uVar16;
    piVar8 = param_6 + uVar16;
    uVar5 = uVar16;
    piVar7 = piVar13;
    piVar10 = piVar8;
    while( true ) {
      uVar5 = uVar5 - 1;
      piVar10 = piVar10 + -1;
      if ((int)uVar5 < 0) break;
      piVar12 = piVar7 + -1;
      piVar7 = piVar7 + -1;
      if (*piVar12 != *piVar10) goto LAB_0004f274;
    }
    if (uVar16 != 0) {
      iVar18 = *param_4;
      if (uVar16 != 1) {
        piVar9 = param_1;
        piVar8 = param_4 + 1;
        do {
          *piVar9 = iVar18;
          piVar7 = piVar8 + 1;
          iVar18 = *piVar8;
          piVar9 = piVar9 + 1;
          piVar8 = piVar7;
        } while (piVar7 != piVar13);
        local_90 = param_1 + (uVar16 - 1);
      }
      *local_90 = iVar18;
    }
    piVar13 = piVar14 + iVar22;
    puVar21 = (uint *)(piVar23 + iVar22);
    iVar18 = iVar22;
    piVar9 = piVar13;
    puVar19 = puVar21;
    do {
      iVar18 = iVar18 + -1;
      puVar19 = puVar19 + -1;
      if (iVar18 < 0) goto LAB_0004efd4;
      puVar1 = (uint *)(piVar9 + -1);
      piVar9 = piVar9 + -1;
    } while (*puVar1 == *puVar19);
    if (*puVar19 < *puVar1) goto LAB_0004efd4;
    if (iVar22 < 1) {
      iVar18 = iVar22 + -1;
      if (iVar22 != 0) goto LAB_0004fb70;
    }
    else {
      iVar18 = iVar22 + -1;
      if (piVar13[-1] == 0) {
        do {
          iVar18 = iVar22;
          iVar22 = iVar18 + -1;
          if (iVar22 == 0) goto LAB_0004f044;
          piVar9 = piVar13 + -2;
          piVar13 = piVar13 + -1;
        } while (*piVar9 == 0);
        iVar18 = iVar18 + -2;
      }
LAB_0004fb70:
      iVar6 = *piVar14;
      piVar9 = param_2;
      if (iVar18 != 0) {
        do {
          piVar14 = piVar14 + 1;
          *piVar9 = iVar6;
          iVar18 = iVar18 + -1;
          iVar6 = *piVar14;
          piVar9 = piVar9 + 1;
        } while (iVar18 != 0);
        local_8c = param_2 + iVar22 + -1;
      }
      iVar22 = -iVar22;
      *local_8c = iVar6;
    }
    goto LAB_0004f044;
  }
  *(int **)(puVar24 + 0x18) = piVar14;
  *(uint *)(puVar24 + 0x14) = param_7;
LAB_0004f4dc:
  *(int **)(puVar24 + 0x10) = param_6;
  param_7 = (*(code *)PTR_MASKED_lehmer_n_0009d160)(param_1,param_2,param_3,param_4);
joined_r0x0004f3e8:
  while( true ) {
    if (local_6c != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
LAB_0004f0dc:
    if (local_2c == *(int *)puVar3) break;
    uVar25 = (*(code *)PTR___stack_chk_fail_0009d4d0)();
LAB_0004fc80:
    iVar6 = 1;
LAB_0004f6ec:
    iVar22 = (int)((ulonglong)uVar25 >> 0x20);
    *(int *)((int)local_8c + (int)uVar25) = iVar6;
LAB_0004f6f8:
    if (uVar16 != 0) {
      iVar22 = -iVar22;
    }
    *param_3 = iVar22;
  }
  return param_7;
LAB_0004efd4:
  uVar5 = puVar21[-1];
  while (uVar5 == 0) {
    iVar22 = iVar22 + -1;
    uVar5 = puVar21[-2];
    puVar21 = puVar21 + -1;
  }
  if (iVar22 != 0) {
    iVar18 = iVar22 + -1;
    iVar6 = *piVar23;
    piVar14 = param_2;
    if (iVar18 != 0) {
      do {
        piVar23 = piVar23 + 1;
        *piVar14 = iVar6;
        iVar18 = iVar18 + -1;
        iVar6 = *piVar23;
        piVar14 = piVar14 + 1;
      } while (iVar18 != 0);
      local_8c = param_2 + iVar22 + -1;
    }
    *local_8c = iVar6;
  }
LAB_0004f044:
  *param_3 = iVar22;
  param_7 = uVar16;
  goto joined_r0x0004f3e8;
LAB_0004f274:
  if ((*piVar14 != 0) || (iVar22 != 1)) {
    piVar7 = piVar9 + uVar16;
    piVar10 = piVar7 + uVar16;
    if (uVar16 != 0) {
      iVar18 = *param_4;
      iVar6 = *param_6;
      if (uVar16 == 1) {
        *piVar7 = iVar18;
        *piVar10 = iVar6;
      }
      else {
        piVar12 = param_4 + 1;
        piVar15 = piVar7;
        do {
          *piVar15 = iVar18;
          piVar11 = piVar12 + 1;
          iVar18 = *piVar12;
          piVar12 = piVar11;
          piVar15 = piVar15 + 1;
        } while (piVar11 != piVar13);
        piVar10[-1] = iVar18;
        piVar12 = param_6 + 1;
        piVar15 = piVar10;
        do {
          *piVar15 = iVar6;
          piVar11 = piVar12 + 1;
          iVar6 = *piVar12;
          piVar12 = piVar11;
          piVar15 = piVar15 + 1;
        } while (piVar11 != piVar8);
        piVar10[uVar16 - 1] = iVar6;
      }
    }
    *(uint *)(puVar24 + 0x14) = uVar16;
    *(int **)(puVar24 + 0x18) = piVar10 + uVar16;
    *(int **)(puVar24 + 0x10) = piVar10;
    param_7 = (*(code *)PTR_MASKED_lehmer_n_0009d160)(param_1,piVar9,&local_68,piVar7);
    iVar18 = local_68;
    iVar6 = iVar22;
    if (iVar22 < 1) {
      if (local_68 != 0) goto LAB_0004f508;
      if (iVar22 != 0) goto LAB_0004f480;
    }
    else {
      if (piVar14[iVar22 + -1] == 0) {
        piVar10 = piVar14 + iVar22;
        do {
          iVar6 = iVar6 + -1;
          if (iVar6 == 0) {
            if (local_68 == 0) goto LAB_0004f338;
            goto LAB_0004f508;
          }
          piVar12 = piVar10 + -2;
          piVar10 = piVar10 + -1;
        } while (*piVar12 == 0);
      }
      if (local_68 != 0) {
LAB_0004f508:
        piVar10 = piVar7 + uVar16 + 1;
        iVar20 = local_68;
        if (local_68 < 0) {
          iVar20 = -local_68;
        }
        uVar5 = uVar16;
        if ((int)uVar16 < 1) {
LAB_0004f550:
          *(uint *)(puVar24 + 0x10) = uVar5;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,piVar9,iVar20,param_4);
        }
        else {
          iVar17 = piVar13[-1];
          while (iVar17 == 0) {
            uVar5 = uVar5 - 1;
            if (uVar5 == 0) goto LAB_0004f550;
            iVar17 = piVar13[-2];
            piVar13 = piVar13 + -1;
          }
          if ((int)uVar5 < iVar20) goto LAB_0004f550;
          *(int *)(puVar24 + 0x10) = iVar20;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar10,param_4,uVar5,piVar9);
        }
        iVar20 = iVar20 + uVar5;
        if (iVar18 < 1) {
          if (((param_7 != 0) &&
              (iVar18 = (*(code *)PTR___gmpn_add_n_0009d334)(piVar10,piVar10,param_1,param_7),
              iVar18 != 0)) && ((int)param_7 < iVar20)) {
            piVar13 = piVar10 + param_7;
            iVar18 = *piVar13;
            *piVar13 = iVar18 + 1;
            if ((iVar18 + 1 == 0) && ((int)(param_7 + 1) < iVar20)) {
              iVar17 = piVar10[param_7 + 1] + 1;
              piVar10[param_7 + 1] = iVar17;
              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {
                iVar17 = piVar13[2] + 1;
                piVar13[2] = iVar17;
                piVar13 = piVar13 + 1;
              }
            }
          }
          iVar20 = iVar20 - (uint)(piVar10[iVar20 + -1] == 0);
          iVar18 = iVar20 + 1;
LAB_0004f728:
          if (0 < (int)uVar16) {
            iVar17 = piVar8[-1];
            while (iVar17 == 0) {
              uVar16 = uVar16 - 1;
              if (uVar16 == 0) break;
              iVar17 = piVar8[-2];
              piVar8 = piVar8 + -1;
            }
          }
          *(uint *)(puVar24 + 0x10) = uVar16;
          (*(code *)PTR___gmpn_divexact_0009d4b4)(piVar7,piVar10,iVar20,param_6);
          iVar18 = (iVar18 - uVar16) - (uint)(piVar7[(iVar18 - uVar16) + -1] == 0);
        }
        else {
          if (((param_7 != 0) &&
              (iVar18 = (*(code *)PTR___gmpn_sub_n_0009d514)(piVar10,piVar10,param_1,param_7),
              iVar18 != 0)) && ((int)param_7 < iVar20)) {
            piVar13 = piVar10 + param_7;
            iVar18 = *piVar13;
            *piVar13 = iVar18 + -1;
            if ((iVar18 == 0) && ((int)(param_7 + 1) < iVar20)) {
              iVar17 = piVar10[param_7 + 1];
              piVar10[param_7 + 1] = iVar17 + -1;
              for (iVar18 = param_7 + 2; (iVar17 == 0 && (iVar20 != iVar18)); iVar18 = iVar18 + 1) {
                iVar17 = piVar13[2];
                piVar13[2] = iVar17 + -1;
                piVar13 = piVar13 + 1;
              }
            }
          }
          if (0 < iVar20) {
            if (piVar10[iVar20 + -1] != 0) goto LAB_0004f720;
            piVar13 = piVar10 + iVar20;
            do {
              iVar18 = iVar20;
              iVar20 = iVar18 + -1;
              if (iVar20 == 0) {
                iVar18 = 0;
                goto LAB_0004f5f0;
              }
              piVar12 = piVar13 + -2;
              piVar13 = piVar13 + -1;
            } while (*piVar12 == 0);
            goto LAB_0004f728;
          }
          iVar18 = 0;
          if (iVar20 != 0) {
LAB_0004f720:
            iVar18 = iVar20 + 1;
            goto LAB_0004f728;
          }
        }
LAB_0004f5f0:
        bVar2 = local_68 < 1;
        if (bVar2) {
          local_68 = -local_68;
        }
        iVar20 = local_68;
        uVar16 = (uint)bVar2;
        if ((0 < iVar22) && (piVar23[iVar22 + -1] == 0)) {
          piVar13 = piVar23 + iVar22;
          do {
            iVar22 = iVar22 + -1;
            if (iVar22 == 0) break;
            piVar8 = piVar13 + -2;
            piVar13 = piVar13 + -1;
          } while (*piVar8 == 0);
        }
        if (iVar22 < local_68) {
          *(int *)(puVar24 + 0x10) = iVar22;
          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar9,iVar20,piVar23);
        }
        else {
          *(int *)(puVar24 + 0x10) = local_68;
          (*(code *)PTR___gmpn_mul_0009d2b4)(param_2,piVar23,iVar22,piVar9);
        }
        iVar22 = (iVar22 + local_68) - (uint)(param_2[iVar22 + local_68 + -1] == 0);
        if (iVar18 < 1) goto LAB_0004f6f8;
        if (iVar6 < iVar18) {
          *(int *)(puVar24 + 0x10) = iVar6;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar7,iVar18,piVar14);
        }
        else {
          *(int *)(puVar24 + 0x10) = iVar18;
          (*(code *)PTR___gmpn_mul_0009d2b4)(piVar23,piVar14,iVar6,piVar7);
        }
        iVar18 = (iVar18 + iVar6) - (uint)(piVar23[iVar18 + iVar6 + -1] == 0);
        if (iVar22 < iVar18) {
          if (iVar22 != 0) {
            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,piVar23,param_2,iVar22);
            if (iVar6 == 0) {
              if (param_2 == piVar23) {
                uVar25 = CONCAT44(iVar18,iVar18 * 4);
                iVar6 = 0;
                goto LAB_0004f6ec;
              }
              bVar2 = iVar22 < iVar18;
              goto LAB_0004fa3c;
            }
            piVar9 = piVar23 + iVar22;
            piVar14 = param_2 + iVar22;
            while( true ) {
              iVar20 = iVar22;
              iVar6 = *piVar9;
              iVar22 = iVar20 + 1;
              *piVar14 = iVar6 + 1;
              if (iVar6 + 1 != 0) break;
              piVar9 = piVar9 + 1;
              piVar14 = piVar14 + 1;
              if (iVar18 == iVar22) {
                iVar6 = 1;
                uVar25 = CONCAT44(iVar20 + 2,iVar18 * 4);
                goto LAB_0004f6ec;
              }
            }
          }
          bVar2 = iVar22 < iVar18;
          if ((param_2 != piVar23) && (bVar2)) {
LAB_0004fa3c:
            iVar6 = 4;
            if (bVar2) {
              iVar6 = (iVar18 - iVar22) * 4;
            }
            (*(code *)PTR_memcpy_0009d544)(param_2 + iVar22,piVar23 + iVar22,iVar6);
            iVar6 = 0;
            uVar25 = CONCAT44(iVar18,iVar18 * 4);
            goto LAB_0004f6ec;
          }
          iVar6 = 0;
          iVar22 = iVar18;
        }
        else {
          if (iVar18 != 0) {
            iVar6 = (*(code *)PTR___gmpn_add_n_0009d334)(param_2,param_2,piVar23,iVar18);
            if (iVar6 == 0) goto LAB_0004f6e8;
            iVar6 = iVar18 + 1;
            uVar25 = CONCAT44(iVar6,iVar18 * 4);
            piVar14 = param_2 + iVar18;
            if (iVar22 == iVar18) goto LAB_0004fc80;
            iVar20 = *piVar14;
            *piVar14 = iVar20 + 1;
            if (iVar20 + 1 == 0) {
              if (iVar22 <= iVar6) {
LAB_0004f9ec:
                iVar6 = 1;
                uVar25 = CONCAT44(iVar22 + 1,iVar22 * 4);
                goto LAB_0004f6ec;
              }
              iVar18 = iVar18 + 2;
              iVar20 = param_2[iVar6] + 1;
              param_2[iVar6] = iVar20;
              if (iVar20 == 0) {
                do {
                  if (iVar22 == iVar18) goto LAB_0004f9ec;
                  iVar20 = piVar14[2];
                  iVar18 = iVar18 + 1;
                  piVar14[2] = iVar20 + 1;
                  iVar6 = 0;
                  piVar14 = piVar14 + 1;
                } while (iVar20 + 1 == 0);
                goto LAB_0004f6e8;
              }
            }
          }
          iVar6 = 0;
        }
LAB_0004f6e8:
        uVar25 = CONCAT44(iVar22,iVar22 << 2);
        goto LAB_0004f6ec;
      }
LAB_0004f480:
      iVar22 = iVar6 + -1;
      iVar20 = *piVar14;
      piVar9 = param_2;
      if (iVar22 != 0) {
        do {
          piVar14 = piVar14 + 1;
          *piVar9 = iVar20;
          iVar22 = iVar22 + -1;
          iVar20 = *piVar14;
          piVar9 = piVar9 + 1;
        } while (iVar22 != 0);
        local_8c = param_2 + iVar6 + -1;
      }
      iVar18 = -iVar6;
      *local_8c = iVar20;
    }
LAB_0004f338:
    *param_3 = iVar18;
    goto joined_r0x0004f3e8;
  }
  *(int **)(puVar24 + 0x18) = piVar9;
  *(uint *)(puVar24 + 0x14) = uVar16;
  goto LAB_0004f4dc;
}

